您的位置:首页 > 移动开发 > Android开发

Android 7.0 出现 ”FileUriExposedException“ 和 ”解析包出现错误“ 异常的解决办法

2017-12-06 19:44 561 查看

问题1 :
android.os.FileUriExposedException: file:///storage/emulated/0/Android/data/com.xxx.xxx.xxx.release/files/Download/2017120600.apk exposed beyond app through Intent.getData()

问题2 : 已经做了 Android 7.0 的 FileProvider 的适配,但是在应用内下载升级的时候提示 ”解析包出现问题“ .

以上两个问题,都是 Android 7.0 适配的问题。

问题1 : 没有做 Android 7.0 的适配,做了适配就没有这个错误了

问题2 : 在适配的时候,XML 文件中的 PATHS 写的不正确。造成获取到的 Uri 是错误的,因为提示解析包出现问题。只要正确的路径就没有问题。

FileProvider 继承 ContentProvider。肯定是以
conent://com.xxx.xxx/
开头的, 其中
com.xxx.xxx
是应用的包名。所以使用 FileProvider 与使用 ContentProvider 一样的。

注意点:注意路径,在 XML 的 PATHS 中写入了路径,每次会把这些路径读取到内存,然后使用 FileProvider 的时候会对传入的 file 做路径的匹配,匹配成功了,就可以正确的使用文件了。匹配不成功,会出现异常。所以在 XML 的 PATH 的时候注意根据自己所在文件的路径填写正确。以下列表是不同目录的 PATH:

使用中注意在 XML 文件中的路径的填写,填写错误的话,会无法访问到该路径。

files-path : Context.getFilesDir().

cache-path : getCacheDir().

external-path : Environment.getExternalStorageDirectory().

external-files-path : Context#getExternalFilesDir(String) Context.getExternalFilesDir(null).

external-cache-path : Context.getExternalCacheDir().

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: