美文网首页
Android 7.0 FileUriExposedExcept

Android 7.0 FileUriExposedExcept

作者: 学习不断 | 来源:发表于2017-12-04 16:08 被阅读7次

报错为:

android.os.FileUriExposedException: file:///storage/emulated/0/Android/data/com.xxx.xxx/cache/app/app.apk exposed beyond app through Intent.getData()at android.os.StrictMode.onFileUriExposed(StrictMode.java:1799)...at com.skyrin.bingo.update.AppUpdate.installApk(AppUpdate.java:295)

报错原因:

Android 7.0 以上不支持 file://协议 需要通过 FileProvider 访问 sd卡 下面的文件,所以 Uri 需要通过 FileProvider 构造,协议为 content://

修改点:

1. manifest添加

android:name="android.support.v4.content.FileProvider"

android:authorities="com.xxx.xxx.file_provider"

android:grantUriPermissions="true"

android:exported="false">

android:name="android.support.FILE_PROVIDER_PATHS"

android:resource="@xml/filepaths"/>

2. xml/添加文件

3. 使用

Uri uri;

if(Build.VERSION.SDK_INT>= Build.VERSION_CODES.N) {

// content:// 协议

uri = FileProvider.getUriForFile(mContext,"com.xx.xxx.file_provider", file);

//Granting Temporary Permissions to a URI

intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

}else{

// file:// 协议

uri = Uri.fromFile(file);

}

相关文章

网友评论

      本文标题:Android 7.0 FileUriExposedExcept

      本文链接:https://www.haomeiwen.com/subject/aisxixtx.html