概述
继承于ContentProvider,对第三方应用暴露文件,并授予文件读写操作的权限
<!--兼容Android7.0,把访问文件的Uri方式改为FileProvider-->
<!--android:grantUriPermissions 必须设置为true -->
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="@string/file_provider"
android:grantUriPermissions="true">
<!--配置哪些路径是可以通过FileProvider访问的-->
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"/>
</provider>
res/xml/file_paths.xml
<paths>
<external-path
name="external_storage_download"
path="Download" />
</paths>
// 根据指定路径创建一个Uri对象
Uri uri = Uri.parse(path);
// 兼容Android7.0,把访问文件的Uri方式改为FileProvider
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
// 通过FileProvider获得文件的Uri访问方式
FileProvider.getUriForFile(this, getString(R.string.file_provider), new File(path));
Log.d("AAAA", String.format("new uri:%s", uri.toString()));
}
案例代码