如何在Android Nougat中使用Intent打开PDF文件?
问题描述:
我感谢你的帮助,使我的代码可以打开一个PDF文件,意图,这是我一直在使用的代码:如何在Android Nougat中使用Intent打开PDF文件?
String pathFile =
Environment.getExternalStorageDirectory().toString() +
FileUtils.PATH_SEPARATOR + "myFolder" +
FileUtils.PATH_SEPARATOR + "myFile.pdf";
File pdfFile = new File(pathFile);
if (pdfFile.exists()) {
Uri uri = Uri.fromFile(new File(pathFile));
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri, "application/pdf");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
但据我所知,现在(从Android-N版)的特权处理方式不同,所以我希望你能通过指出我必须做出什么改变来获得使用Intent打开的PDF文件来帮助我。
PS:在我的AndroidManifest.xml我正在寻找在存储的所有权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
答
试试这个代码。
Intent intent = new Intent(Intent.ACTION_VIEW);
try {
String newFilePath = filePath.replaceAll("%20", " ");
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
intent.setDataAndType(Uri.parse(newFilePath), "application/pdf");
} else {
Uri uri = Uri.parse(newFilePath);
File file = new File(uri.getPath());
if (file.exists()){
uri = FileProvider.getUriForFile(context, context.getPackageName() + ".provider", file);
intent.setDataAndType(uri, "application/pdf");
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
}
}
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);
您是否允许读取外部存储? – Karthik
我在我的AndroidManifest.xml上有关于存储的权限请求 – Pepo
您是否声明了运行时权限,因为从nogout开始,我们需要声明运行时权限。 – Karthik