| 知乎专栏 |
下载 apk 文件,抛出 android.os.FileUriExposedException 异常
android.os.FileUriExposedException: file:///storage/emulated/0/Download/netkiller.apk exposed beyond app through Intent.getData()
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
此种方法不行
intent.setDataAndType(Uri.fromFile(new File(filePath)), "application/vnd.android.package-archive");
改用 FileProvider.getUriForFile
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
// intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
Uri contentUri = FileProvider.getUriForFile(context, "cn.netkiller.student.fileprovider", new File(filePath));
intent.setDataAndType(contentUri, "application/vnd.android.package-archive");
intent.setPackage(context.getPackageName());
context.startActivity(intent);