android 7.0获取Uri

1,737 阅读1分钟

一、Uri的获取

【1】 android7.0之前使用Uri.fromFile()

【2】 android7.0以后,使用Uri.fromFile会报FileUriExposedException异常,这是因为android7.0以后执行了更加严格的文件管理,要解决这一错误需要使用7.0新添加的FileProvide类

【3】 获取uri的方法:

1.在res下,新建xml文件夹,新建xml文件file_paths
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path
    name="myImg"
    path="."/>
</paths>

paths元素必须包含以下一个或者多个子元素:
	files-path 对应目录Context.getFilesDir()
	cache-path 对应目录Context.getCacheDir()
	external-path 对应目录Environment.getExternalStorageDirectory()
	external-files-path 对应目录Context,getExternalFilesDir(String) 或者Context.getExternalFilesDir(null)
	external-cache-path 对应目录Context.getExternalCacheDir()。
name 是分享的文件路径的一部分,它会覆盖要分享的真实的路径,即path指定的路径。 
path 即文件真实路径,最后创建出来的文件路径为(参照上述例子):Context.getFilesDir()+path+”/”+文件名。

2.在清单文件中配置provider
<provider
        android:name="android.support.v4.content.FileProvider"
        android:authorities="com.wzh.picdemo.fileProvider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/file_paths" />
</provider>


3.使用api获取uri
FileProvider.getUriForFile(getContext(), 清单文件中配置的authorities, filePath);