Android 7.0拍照FileProvider与xml文件对应关系(Failed to find configured root that contains)

从Android 7.0禁止了在应用外部公开file://URL,如果一项包含文件的URI的intent离开应用,则会抛出FileUriExposeException异常。

要在应用间共享数据,在7.0及以上系统上要使用FileProviert类授予content:// URI临时访问权限。这一改动,主要影响了应用的拍照后照片存储路径的功能。

要使用FileProviert,要在AndroidManifest.xml清单文件中注册内容提供者,并指向xml下的一个路径,这个路径与拍照时照片存储位置要保持一致,否则就会抛出Failed to find configured root that contains异常。

下面列出常用xml文件与文件路径path对应关系:


<files-path path="" name="camera_photos" />

对应Context.getFilesDir()返回的路径,如:/data/data/<application package>/files


<cache-path name="name" path="path" />

对应getCacheDir返回的路径:/data/data/<application package>/cache


<external-files-path name="name" path="path" />

对应Context.getExternalFilesDir(String)返回的路径,如:/storage/emulated/0/Android/data/<application package>/files
存放长时间保存的数据,对应设置中清除数据,应用卸载后会被删除。


<external-cache-path name="name" path="path" />

对应Context.getExternalCacheDir()返回的路径,如:/storage/emulated/0/Android/data/<application package>/cache
存放临时缓存数据,对应设置中清除缓存,应用卸载后会被删除。


<external-path name="name" path="path" />

对应Environment.getExternalStorageDirectory,如:/storage/emulated/0
获取外部存储区根目录下文件,需要读写内存权限,应用卸载后不会被删除。


<root-path path="" name="camera_photos" />

对应外部存储卡,目前已很少使用了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值