如何在 Android >= 8 上打开包含内容 URI 的 pdf?

问题描述 投票:0回答:1

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

我创建了一个意图并使用了

ACTION_VIEW
过滤器,但是当我在 Google PDF 中打开时,它只显示空白屏幕,没有其他内容,甚至 Google PDF 中的文件名也不可见,只有文档 ID (content-provider://.... /文档/122 <- this id) is shown

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"));
android uri android-contentprovider
1个回答
1
投票

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

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

还要检查您是否可以长期访问内容 URI。在 Android 4.3 之后,您需要在获得的内容 uri 上使用

takePersistableUriPermission()
请求持久权限。此外,您还需要将
ACTION_VIEW
更改为
ACTION_OPEN_DOCUMENT
,以便获取您提到的
takePersistableUriPermission()
工作的 URI。

阅读下面的文章以获取更多说明:

© www.soinside.com 2019 - 2024. All rights reserved.