PNG 的共享选项
Share Option for PNGs
我正在尝试在我的应用程序中实现 png 图片的共享选项,但我一直收到 TransactionTooLargeException。我做了什么:我添加了代码来压缩我的位图,但我仍然遇到异常。我做错了什么吗?
public void sharePicture(MenuItem shareItem) {
MenuItemCompat.getActionProvider(shareItem);
Drawable drawable = itemImage.getDrawable();
Bitmap picture = ((BitmapDrawable) drawable).getBitmap();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
picture.compress(Bitmap.CompressFormat.PNG, 100, stream);
final Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("image/png");
shareIntent.putExtra(Intent.EXTRA_STREAM, picture);
startActivity(Intent.createChooser(shareIntent, "Share image using"));
}
引用 the documentation,EXTRA_STREAM
是:
A content: URI holding a stream of data associated with the Intent, used with ACTION_SEND to supply the data being sent.
您没有为 image/png
ACTION_SEND
请求将 Bitmap
放入 EXTRA_STREAM
。您将指向 PNG 的 Uri
放入 EXTRA_STREAM
。理想情况下,您可以通过 FileProvider
执行此操作,但如果您的 targetSdkVersion
低于 24,则暂时可以使用 Uri.fromFile()
。
我正在尝试在我的应用程序中实现 png 图片的共享选项,但我一直收到 TransactionTooLargeException。我做了什么:我添加了代码来压缩我的位图,但我仍然遇到异常。我做错了什么吗?
public void sharePicture(MenuItem shareItem) {
MenuItemCompat.getActionProvider(shareItem);
Drawable drawable = itemImage.getDrawable();
Bitmap picture = ((BitmapDrawable) drawable).getBitmap();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
picture.compress(Bitmap.CompressFormat.PNG, 100, stream);
final Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("image/png");
shareIntent.putExtra(Intent.EXTRA_STREAM, picture);
startActivity(Intent.createChooser(shareIntent, "Share image using"));
}
引用 the documentation,EXTRA_STREAM
是:
A content: URI holding a stream of data associated with the Intent, used with ACTION_SEND to supply the data being sent.
您没有为 image/png
ACTION_SEND
请求将 Bitmap
放入 EXTRA_STREAM
。您将指向 PNG 的 Uri
放入 EXTRA_STREAM
。理想情况下,您可以通过 FileProvider
执行此操作,但如果您的 targetSdkVersion
低于 24,则暂时可以使用 Uri.fromFile()
。