Android7.0的手机升级安装APK时,出现FileUriExposedException错误

时间:2023-01-19 16:55:04

今天遇到了个问题,app要升级,下载完apk后打开安装界面时崩溃了。经过网上查看,找到了解决办法:

1、在AndroidManifest下的application节点下添加如下代码:

<provider android:name="android.support.v4.content.FileProvider" android:authorities="hylk.com.xiaochekaoqin" android:exported="false" android:grantUriPermissions="true">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" />
</provider>
android:authorities为自己的app包名即可。
2、在 res/xml文件夹下添加file_paths.xml文件
 文件里的内容如下:
 <?xml version="1.0" encoding="utf-8"?>
 <paths>
    <external-path path="Android/data/app包名/" name="files_root" />    <external-path path="." name="external_storage_root" /> </paths>
其中第一个path里的目录换成自己的包名
3、在代码中添加如下代码,用来打开apk到安装界面:
 
private void openFile(File file) {   Intent intent = new Intent(Intent.ACTION_VIEW);   Uri data;   // 判断版本大于等于7.0   if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {      // "net.csdn.blog.ruancoder.fileprovider"即是在清单文件中配置的authorities      data = FileProvider.getUriForFile(this, "hylk.com.xiaochekaoqin", file);      // 给目标应用一个临时授权      intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);   } else {      data = Uri.fromFile(file);   }   intent.setDataAndType(data, "application/vnd.android.package-archive");   startActivity(intent);}
其中
FileProvider.getUriForFile(this, "hylk.com.xiaochekaoqin", file);的第二个参数为自己的包名和1里的一样即可。
// ------------------------------------------------
以上三步完成后,即可在android7.0的手机上升级安装apk
 
具体可参考其他博主的详细解答:
http://www.cnblogs.com/yongdaimi/p/6067319.html