আমি জানতে পেরেছি আপনি কেবল পাঠ্য বা চিত্র উভয়ই ভাগ করতে পারেন , উভয়ই ব্যবহার করছেন না Intents। কোড শেয়ার কেবল নীচের চিত্র যদি বিদ্যমান, অথবা শুধুমাত্র পাঠ্য যদি ভাবমূর্তি প্রস্থানের না। আপনি যদি উভয়ই ভাগ করতে চান তবে আপনাকে এখান থেকে ফেসবুক এসডিকে ব্যবহার করতে হবে ।
আপনি যদি নীচের কোডের পরিবর্তে অন্য সমাধান ব্যবহার করেন তবে প্যাকেজের নাম com.facebook.lite নির্দিষ্ট করতে ভুলবেন না , যা ফেসবুক লাইটের প্যাকেজের নাম । আমি পরীক্ষা নিই নি তবে com.facebook.orca হ'ল ফেসবুক ম্যাসেঞ্জারের প্যাকেজের নাম যদি আপনিও এটি লক্ষ্য করতে চান।
আপনি হোয়াটসঅ্যাপ , টুইটারের সাথে ভাগ করে নেওয়ার জন্য আরও পদ্ধতি যুক্ত করতে পারেন ...
public class IntentShareHelper {
public static void shareOnFacebook(AppCompatActivity appCompatActivity, String textBody, Uri fileUri) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT,!TextUtils.isEmpty(textBody) ? textBody : "");
if (fileUri != null) {
intent.putExtra(Intent.EXTRA_STREAM, fileUri);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.setType("image/*");
}
boolean facebookAppFound = false;
List<ResolveInfo> matches = appCompatActivity.getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
for (ResolveInfo info : matches) {
if (info.activityInfo.packageName.toLowerCase().startsWith("com.facebook.katana") ||
info.activityInfo.packageName.toLowerCase().startsWith("com.facebook.lite")) {
intent.setPackage(info.activityInfo.packageName);
facebookAppFound = true;
break;
}
}
if (facebookAppFound) {
appCompatActivity.startActivity(intent);
} else {
showWarningDialog(appCompatActivity, appCompatActivity.getString(R.string.error_activity_not_found));
}
}
public static void shareOnWhatsapp(AppCompatActivity appCompatActivity, String textBody, Uri fileUri){...}
private static void showWarningDialog(Context context, String message) {
new AlertDialog.Builder(context)
.setMessage(message)
.setNegativeButton(context.getString(R.string.close), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
})
.setCancelable(true)
.create().show();
}
}
ফাইল থেকে উরি পাওয়ার জন্য , ক্লাসের নীচে ব্যবহার করুন:
public class UtilityFile {
public static @Nullable Uri getUriFromFile(Context context, @Nullable File file) {
if (file == null)
return null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
try {
return FileProvider.getUriForFile(context, "com.my.package.fileprovider", file);
} catch (Exception e) {
e.printStackTrace();
return null;
}
} else {
return Uri.fromFile(file);
}
}
public static Uri getLocalBitmapUri(Context context, ImageView imageView) {
Drawable drawable = imageView.getDrawable();
Bitmap bmp = null;
if (drawable instanceof BitmapDrawable) {
bmp = ((BitmapDrawable) imageView.getDrawable()).getBitmap();
} else {
return null;
}
Uri bmpUri = null;
try {
File file = new File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "share_image_" + System.currentTimeMillis() + ".png");
FileOutputStream out = new FileOutputStream(file);
bmp.compress(Bitmap.CompressFormat.PNG, 90, out);
out.close();
bmpUri = getUriFromFile(context, file);
} catch (IOException e) {
e.printStackTrace();
}
return bmpUri;
}
}
ফাইলপ্রোভিডার লেখার জন্য , এই লিঙ্কটি ব্যবহার করুন: https://github.com/codepath/android_guides/wiki/Sharing-Content-with-Intters