【问题标题】:Share PDF using intent in android not working in Android 12在 Android 中使用 Intent 共享 PDF 在 Android 12 中不起作用
【发布时间】:2022-01-19 05:56:27
【问题描述】:

我无法仅在 android 12 中使用 Intent 共享 PDF,但它在低于版本的情况下工作正常。正在下载文件并从下载文件夹中获取文件 Uri。

下载位置:

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)

错误信息:分享失败,请重试。

private void sharePDF() {
    Uri fileUri = FileProvider.getUriForFile(getApplicationContext(), getPackageName() + ".provider", pdfFile);

    Intent share = new Intent();
    share.setAction(Intent.ACTION_SEND);
    share.putExtra(Intent.EXTRA_STREAM, fileUri);
    share.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    share.setType("application/pdf");
    startActivity(Intent.createChooser(share, "Share Catalogue"));
}

【问题讨论】:

  • 帮助我或建议代码 sn-p 或博客链接

标签: android android-intent


【解决方案1】:

我在下面提到的 Android 12 (API-31) 中遇到了问题,

错误日志:java.lang.SecurityException:权限被拒绝:从 pid=30787,uid= 读取 androidx.core.content.FileProvider uri content://com.test.catalogue.provider/external/Download/test.pdf 1000 需要导出提供者,或者 grantUriPermission()

经过多次研发,我添加了几行并通过意图解决了共享pdf文件问题。

share.setClipData(ClipData.newRawUri("", fileUri));
    share.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
    share.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

share.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);

share.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

但这里还是发现了一个问题,过段时间我们会得到“分享文件再试一次”。

【讨论】:

  • 不要使用 startActivity(Intent.createChooser(share, "Share Catalog"));使用 startActivity(share);
猜你喜欢
  • 2022-06-25
  • 1970-01-01
  • 1970-01-01
  • 2021-11-16
  • 1970-01-01
  • 2018-05-16
  • 2021-10-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多