如何在安卓 >= 8 上打开内容 URI 的 pdf?



我正在尝试使用现有已安装的pdf应用程序(如Google PDF Viewer)打开pdf。但 PDF 屏幕显示空白。

我创建了一个意图并使用了ACTION_VIEW过滤器,但是当我在Google PDF中打开时,它只显示空白屏幕,甚至Google PDF中的文件名也不可见,仅显示文档ID(内容提供者://..../document/122<-此ID)

String filePath = "content://com.android.providers.downloads.documents/document/346";
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(filePath), "application/pdf");
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
mActivity.startActivity(Intent.createChooser(intent, "select an app to open this file"));

setFlags将替换所有先前的意图标志。所以改用addFlags——

intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);

还要检查您是否有权长期访问内容 URI。在 Android 4.3 之后,您需要使用takePersistableUriPermission()获取的内容 uri 请求持久权限。此外,还需要将ACTION_VIEW更改为ACTION_OPEN_DOCUMENT获取您提到的 URI 的位置,以便takePersistableUriPermission()工作。
阅读以下文章以获取更多说明 - - 关于使用ACTION_OPEN_DOCUMENT
-
如何使用新的存储访问框架访问/修改/创建文件

最新更新