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对应关系:



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



对应getCacheDir返回的路径:/data/data//cache



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



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



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



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

你可能感兴趣的:(Android学习之路)