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 documentationEXTRA_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()