我从布局中获取图片而不想保存它。我想通过意图ACTION_SEND
服务直接分享它。当我发送它时会发出异常Transaction Too many Large: data parcel size 2315980 bytes
这是我的代码段
View myview = (View) findViewById(R.id.mylayout);
Bitmap mypicture = getBitmapFromView(myview);
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra("", mypicture);
intent.setType("image/jpeg");
startActivity(intent);
答案 0 :(得分:0)
我想通过意图ACTION_SEND服务
直接分享
这不是一个选择。 EXTRA_TEXT
holds text。 EXTRA_STREAM
holds a Uri
。这些都不是Bitmap
。
这是我的代码段
你的额外内容毫无意义,因为没有ACTION_SEND
个活动会用空键寻找额外的。
答案 1 :(得分:0)
您可以将位图保存到文件,然后共享该文件的uri / link。
public static File saveBitmapInternal(Context context, Bitmap bitmap) {
File imagePath = new File(context.getFilesDir(), "images");
if (!imagePath.exists() && !imagePath.mkdirs()) {
print("Make dir failed");
}
return saveBitmap(bitmap, "preview.png", imagePath);
}
private static File saveBitmap(Bitmap bitmap, String filename, File root) {
print(String.format("Saving %dx%d bitmap to %s.", bitmap.getWidth(), bitmap.getHeight(), filename));
final File file = new File(root, filename);
if (file.exists()) {
file.delete();
}
try {
final FileOutputStream out = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.PNG, 99, out);
out.flush();
out.close();
return file;
} catch (final Exception e) {
print("Exception!" + e);
}
return null;
}
然后分享,
// Uri uri = Uri.fromFile(file);
Uri uri = FileProvider.getUriForFile(context,
context.getString(R.string.file_provider_authority),
file);
final Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_STREAM, uri);
intent.putExtra(Intent.EXTRA_TEXT, shareText);
context.startActivity(Intent.createChooser(intent, "Share media"));
您需要在清单中设置文件提供程序(请参阅https://developer.android.com/reference/android/support/v4/content/FileProvider.html)。如果您对fileprovider有疑问,可以创建另一个问题。