if (Utils.isPackageInstalled(getContext(), "com.whatsapp")) {
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
Bitmap bitmap = Utils.screenShotBitmap(getActivity());
Utils.saveImage(getActivity(), bitmap, bet.getID() + ".jpeg");
File file = new File(getActivity().getFilesDir(), bet.getID() + ".jpeg");
if (file.exists()) {
Log.i("share", "file exists");
Log.i("share", Uri.fromFile(file).toString());
}
sendIntent.putExtra(Intent.EXTRA_TEXT, "Share text");
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
sendIntent.setType("image/*");
sendIntent.setPackage("com.whatsapp");
startActivity(sendIntent);
}
// ...
public static Bitmap screenShotBitmap(Activity activity) {
return Falcon.takeScreenshotBitmap(activity);
}
public static void saveImage(Context context, Bitmap b, String name){
FileOutputStream out;
try {
out = context.openFileOutput(name, Context.MODE_PRIVATE);
b.compress(Bitmap.CompressFormat.JPEG, 90, out);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
登入输出:
03-25 17:13:24.328 26417-26417/x.x.x I/share: file exists
03-25 17:13:24.328 26417-26417/x.x.x I/share: file:///data/data/x.x.x/files/4b00abc2-7aae-4234-945b-59905306ad4a.jpeg
Bitmap bitmap = Utils.screenShotBitmap(getActivity());
似乎工作正常并返回正确的位图,因为我可以毫无问题地与Facebook分享。
答案 0 :(得分:0)
因为我可以毫无问题地与Facebook分享
不是那个代码。
您正在将文件写入内部存储空间。 Facebook和WhatsApp都无法访问您internal storage的部分内容。另外,using file:
Uri
values is being phased out。
正确的长期答案是use a ContentProvider
to publish the bitmap,例如使用FileProvider
。在短期内,您可以放弃写external storage,例如getExternalFilesDir()
。
另请注意,ACTION_SEND
收件人无需同时尊重EXTRA_TEXT
和EXTRA_STREAM
,只需尊重其中一个。