আমি জানতে পেরেছি আপনি কেবল পাঠ্য বা চিত্র উভয়ই ভাগ করতে পারেন , উভয়ই ব্যবহার করছেন না 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