在 android 中使用意图共享 PDF 在 Android 12 中不起作用
Share PDF using intent in android not working in Android 12
我无法仅在 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"));
}
我在下面提到的 Android 12 (API-31) 中遇到了问题,
错误日志:java.lang.SecurityException:权限被拒绝:读取 androidx.core.content.FileProvider uri 内容://com.test.catalogue.provider/external/Download/test.pdf 来自 pid=30787,uid=1000 需要提供者被导出,或 grantUriPermission()
经过多次研发,我添加了几行并通过 intent 解决了共享 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);
但是这里还是发现了一个问题,过一段时间我们会得到“共享已归档再试一次”的提示。
我无法仅在 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"));
}
我在下面提到的 Android 12 (API-31) 中遇到了问题,
错误日志:java.lang.SecurityException:权限被拒绝:读取 androidx.core.content.FileProvider uri 内容://com.test.catalogue.provider/external/Download/test.pdf 来自 pid=30787,uid=1000 需要提供者被导出,或 grantUriPermission()
经过多次研发,我添加了几行并通过 intent 解决了共享 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);
但是这里还是发现了一个问题,过一段时间我们会得到“共享已归档再试一次”的提示。