我正在尝试使用现有已安装的 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"));
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。
阅读下面的文章以获取更多说明: