1. 在清单文件中配置FileProvider
FileProvider是ContentProvider的子类,属于四大组件之一,因此需要在清单文件中配置。
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.haoxueren.CUSTOM_AUTHORITIES"
android:grantUriPermissions="true" />
2. 配置对外暴露的目录
在/res/xml/
目录下创建file_paths.xml
文件,里面配置上需要对外暴露的目录。
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path
name="path_name"
path="." />
</paths>
3. 在FileProvider内配置<meta-data />
期中<meta-data />
的name
属性为固定字符串,resource
即我们配置的对外暴露的xml文件。
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.haoxueren.CUSTOM_AUTHORITIES"
android:grantUriPermissions="true">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_path"/>
</provider>
4. 使用FileProvider生成文件的Uri
注:这里的authorties
就是清单文件中配置的authorties
。
Uri uri = FileProvider.getUriForFile(
context, "com.haoxueren.CUSTOM_AUTHORITIES", file);
网友评论