بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

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

مدیریت گفتگو
Ghost 11 سال پیش
آخرین تغییر: 10 سال پیش

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

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

 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"/>

همین و تمام .

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

موفق باشید

نظرات

Ghost 11 سال پیش
سلام دوستان . دیدم این چند روزه در مورد اشتراک گذاری تصویر خیلی سوال میشه . گفتم تاپیک رو بیارم بالا تا دوستان استفاده کنند .
Mohammad 11 سال پیش
دمت گرم سجادجان فقط ی سوال... وقتی تکستی روی عکس انداخته شده چطور هم از عکس اسکرین شات بگیریم هم از تکست؟یعنی خواستیم اسکرین شات بگیریم تکست یا هرچی که روی عکس باشه با هم ذخیره بشه؟
Ghost 11 سال پیش
ببین تو هرچی که میخوای ازش عکس گرفته بشه و اشتراک گذاری بشه رو بگذار توی Relative Layou که آی دیش rootView هست . عکس رو متن رو بگذار داخلش . همین
Mohammad 11 سال پیش
خیلی مچکرم...
حمید زمانی 11 سال پیش
من همین کار رو می خوام بکنم عکس ها در layout نیست و در پوشه drawable می باشد ، کجای کد رو واسه این کار تغییر بدم؟
alireza 11 سال پیش
کجای کد داره مشخص می کنه که من عکسم رو گذاشتم توی Relative Layou ؟
alireza 11 سال پیش
دوست عزیز اگ هبخوایم به همراه این عکس یه متن در تکست ویو هم اضافه کنیم میشه راهنمایی کنید که باید کجای کد رو تغییر بدیم که متن هم به همراه عکس share بشه ؟
Ghost 11 سال پیش
سلام دوست عزیز . من در پاسخ Mohammad جواب شما رو هم دادم . شما باید از یک ویو با اسم Relative Layout استفاده کنید . شما میتونید در Relative Layout یک متن رو روی یک عکس قرار دهید . اگه بازم متوجه نشدید بگید تا پروژه رو بنویسم و بدم تا ایمپورت کنید .
alireza 11 سال پیش
نه ببینید من می خوام توی یه اکتیویتی که یه متن داره و پایین این متن یه عکس هم قرار داره الان با اموزش شما من عکس رو می تونم به اشتراک بذارم ولی می خوام بتونم اون متن رو هم اضافه کنم و اونو هم بشه اشتراک گذاشت دروقع متن روی عکس قرار نداره
Ghost 11 سال پیش
آهان . برای اشتراک گذاری متن میتونید از این لینک استفاده کنید . من پاسخ آخر رو تست کردم صحیح بود...
احسان 10 سال پیش
این روش مشکل حافظه درست نمیکنه ؟ این عکس به صورت موقت هم ذخیره میشه ؟ اگه ذخیره میشه چیکار باید کرد که حافظه پر نشه

پاسخ‌ها 2

Criss 11 سال پیش

سلام دوستان

من از این کد استفاده میکنم < (فقط متن رو هم به اشتراک میزارم)تنها مشکلی که هست اینه که نمیشه بصورت 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"));

 

نظرات

Criss 11 سال پیش
کسی تجربه این کارو قبلا داشته ؟ فکر کنم باید یک تاپیک جداکانه بزنم !
محمد 10 سال پیش
میدونم که تاپیک مال یک سال پیش هست و همینطور این سوال ولی دیدم پاسخی نداره گفتم منم جوابی براش بدم... 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 بزنید درست میشه.
محمد 10 سال پیش

میدونم که تاپیک مال سک سال پیش هست ولی دیدم سوال دوستمون 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");

نظرات


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