آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

اشتراک گذاری تصویر به همراه متن و... داخل عکس ( آموزش)

Ghost  9 سال پیش  7 سال پیش
+31 0

سلام دوستان !دیدم چندتا از دوستان درمورد اشتراک گذاری تصویر مشکل داشتند گفتم یه آموزش کوچولو بگذارم . امیدوارم به دردتون بخوره .

اول این فیلد رو قرار بدید :

 ViewGroup _root;

حالا این کد رو قرار بدید

  _root = (RelativeLayout) findViewById(R.id.rootView);

باید بگم که rootView یک Relative Layou هست . یعنی باید در لایوت خودتون یک Relative Layou قرار بدید و آی دیش رو rootView بگذارید.

خب حالا باید اول از تصویر یک اسکرین شات بگیرید و بعدش ذخیره کنید ! این متد رو بیرون از onCreat قرار بدید :

 
public String SaveScreenshot(){
Random random = new Random();

String path = Environment.getExternalStorageDirectory().toString() + "/EidPics/";
File dir = new File(path);
if (!dir.exists())
dir.mkdirs();
Bitmap bitmap;
_root.setDrawingCacheEnabled(true);
bitmap = Bitmap.createBitmap(_root.getDrawingCache());
_root.setDrawingCacheEnabled(false);
path += String.valueOf(random.nextInt(1000)) + ".jpg";
OutputStream fout = null;
File imageFile = new File(path);

try {
fout = new FileOutputStream(imageFile);
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, fout);
fout.flush();
fout.close();

} catch (FileNotFoundException e) {
return null;
} catch (IOException e) {
return null;
}
return "file://" + imageFile.getAbsolutePath();

}

خب حالا میخوایم وقتی کاربر یک دکمه رو زد بتونه اشتراک بگذاره اون تصویر رو ! این کد رو در onClick دکمه مربوط بگذارید :

String FileName = SaveScreenshot();
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_STREAM, Uri.parse(FileName));
startActivity(Intent.createChooser(intent, getString(R.string.ShareBy)));

توجه کنید :

قسمتR.string.shareBy یک متن است داخل فایل string ! که نوشته شده است اشتراک گذاری شود به وسیله ...

برای راحتی کار این کد رو در فایل string بگذارید :

 <string name="ShareBy">اشتراک گذاری شود به وسیله</string>

و باید یادتون باشه پرمیشن دسترسی به کارت حافظه رو در آندروید منیفست قرار بدید ! اینم پرمیشن :

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

همین و تمام .

اگه مشکلی بود در خدمتم

موفق باشید

0 0
سلام دوستان . دیدم این چند روزه در مورد اشتراک گذاری تصویر خیلی سوال میشه . گفتم تاپیک رو بیارم بالا تا دوستان استفاده کنند . (9 سال پیش)
+1 0
دمت گرم سجادجان فقط ی سوال... وقتی تکستی روی عکس انداخته شده چطور هم از عکس اسکرین شات بگیریم هم از تکست؟یعنی خواستیم اسکرین شات بگیریم تکست یا هرچی که روی عکس باشه با هم ذخیره بشه؟ (9 سال پیش)
+1 0
ببین تو هرچی که میخوای ازش عکس گرفته بشه و اشتراک گذاری بشه رو بگذار توی Relative Layou که آی دیش rootView هست . عکس رو متن رو بگذار داخلش . همین (9 سال پیش)
+1 0
خیلی مچکرم... (9 سال پیش)
+1 0
من همین کار رو می خوام بکنم عکس ها در layout نیست و در پوشه drawable می باشد ، کجای کد رو واسه این کار تغییر بدم؟ (9 سال پیش)
+1 0
کجای کد داره مشخص می کنه که من عکسم رو گذاشتم توی Relative Layou ؟ (9 سال پیش)
+1 0
حل شد .. (9 سال پیش)
+1 0
دوست عزیز اگ هبخوایم به همراه این عکس یه متن در تکست ویو هم اضافه کنیم میشه راهنمایی کنید که باید کجای کد رو تغییر بدیم که متن هم به همراه عکس share بشه ؟ (9 سال پیش)
0 0
سلام دوست عزیز . من در پاسخ Mohammad جواب شما رو هم دادم . شما باید از یک ویو با اسم Relative Layout استفاده کنید . شما میتونید در Relative Layout یک متن رو روی یک عکس قرار دهید . اگه بازم متوجه نشدید بگید تا پروژه رو بنویسم و بدم تا ایمپورت کنید . (9 سال پیش)
+1 0
نه ببینید من می خوام توی یه اکتیویتی که یه متن داره و پایین این متن یه عکس هم قرار داره الان با اموزش شما من عکس رو می تونم به اشتراک بذارم ولی می خوام بتونم اون متن رو هم اضافه کنم و اونو هم بشه اشتراک گذاشت دروقع متن روی عکس قرار نداره (9 سال پیش)
0 0
آهان . برای اشتراک گذاری متن میتونید از این لینک استفاده کنید . من پاسخ آخر رو تست کردم صحیح بود... (9 سال پیش)
0 0
این روش مشکل حافظه درست نمیکنه ؟ این عکس به صورت موقت هم ذخیره میشه ؟ اگه ذخیره میشه چیکار باید کرد که حافظه پر نشه (8 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
Criss  9 سال پیش
0 0

سلام دوستان

من از این کد استفاده میکنم < (فقط متن رو هم به اشتراک میزارم)تنها مشکلی که هست اینه که نمیشه بصورت MultyLines متن رو ارسال کرد و تمام خطوط یکی میشن <

البته < وقتی محتوی را روی برنامه ایی مثل notepad یا دفترچه میفرستم بخوبی کار میده و خروجی MultyLines هست<

اما روی Whatsapp جواب نمیده !

برای بازار تست کردم < دیدم بازار بخوبی محتوی رو بصورت MultyLines همراه با لینک درون WhatsApp شیر میکنه <

چطوری میشه همچین کاری کرد ؟

   String shareBody = "Here is the share content\n" +
"\nwww.google.com\n" +
"\n body";


Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject Here");
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
startActivity(Intent.createChooser(sharingIntent, "SHARE_M"));

 

0 0
کسی تجربه این کارو قبلا داشته ؟ فکر کنم باید یک تاپیک جداکانه بزنم ! (9 سال پیش)
0 0
میدونم که تاپیک مال یک سال پیش هست و همینطور این سوال ولی دیدم پاسخی نداره گفتم منم جوابی براش بدم... shareIntent.putExtra(Intent.EXTRA_TEXT, URL_PIC + "\n\n\n" + images[position] + "\n\n\n" + imageUri + "\n\n\n" + "Quds Day app" + "\n\n" + "Download Link:" + "\n" + لینک ); اینجوری اگه رو بزنید و وسط هر خطی که میخواید بیاد پایین \n بزنید درست میشه. (7 سال پیش)
پاسخ به سوال 
محمد  7 سال پیش
0 0

میدونم که تاپیک مال سک سال پیش هست ولی دیدم سوال دوستمون Criss بی جواب هست گفتم بگم شاید به درد کسی خورد.

تو اشتراک گذاری متن اگر میخواید متن ها چند خطی بشن باید به شکل زیر عمل کنید و بین هر متنی که میخواید یه \n بزنید. مثل برای یک خط یه دونه و برای 3 خط ستا باید بزنید.

 shareIntent.putExtra(Intent.EXTRA_TEXT,
        URL_PIC
                + "\n\n\n"
                + images[position]
                + "\n\n\n"
                + imageUri
                + "\n\n\n"
                + "Quds Day app"
                + "\n\n"
                + "Download Link:"
                + "\n"
                + "http://appbayan.com/QodsDay.apk");

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .