我正在尝试使用现有已安装的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"));
答案 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