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

时间:2019-06-06 12:13:41

标签: android uri android-contentprovider

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

我创建了一个意图并使用了ACTION_VIEW过滤器,但是当我在Google PDF中打开时,它只显示了空白屏幕,即使只有文档ID,也看不到Google PDF中的文件名(content-provider:// .... / 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"));

1 个答案:

答案 0 :(得分:0)

setFlags将替换所有先前的intent标志。因此,请改用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,以使您提到的takePersistableUriPermission()起作用。
阅读下面的文章以获取更多说明-
 -About Using ACTION_OPEN_DOCUMENT
 -How to use new Storage Access Framework to access/modify/create a file