仅适用于 Android 8 和 9。
我这里有一个 PDF 文件管理器 -
String url = "file:///storage/emulated/0/Android/data/com.verna.poc/files/Download/mypdf.pdf";
我正在尝试使用此打开此文件进行查看 -
File file= new File(url);
file.setReadable(true, false);
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri pdfUri = FileProvider.getUriForFile(getApplicationContext(), BuildConfig.APPLICATION_ID + ".provider", file);
intent.setDataAndType(pdfUri, "application/pdf");
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
List<ResolveInfo> resInfoList = getApplicationContext().getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
for (ResolveInfo resolveInfo : resInfoList) {
String packageName = resolveInfo.activityInfo.packageName;
getApplicationContext().grantUriPermission(packageName, pdfUri,
Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
}
Intent in = Intent.createChooser(intent, "Open File");
startActivity(in);
文件选择器选项正在打开,当我使用 Google PDF 阅读器打开文件时,PDF 阅读器会立即打开和关闭。我的代码有什么问题吗?
从拥有该私有目录的应用程序内访问该文件 -Intent
不会削减它,因为这可以由任何应用程序发送。如果它必须是文件选择器Intent
,然后在SD卡上为您的应用程序创建一个共享目录,任何应用程序都可以访问该目录;常规的Downloads
目录也适合于此。
另一个选择(如最初建议的那样)是创建一个简单的文件选择器,它驻留在应用程序中,这样就不会Intent
需要选择一个文件...这一切都有一定的优点和缺点;选择最适合您的一种可能性...一般来说,它是私人存储位置与共享存储位置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)