方案一 合并资源文件声明
简单粗暴速度快
当面临两个及以上provider声明时可以采用合并resource文件的方式
在/res/xml/xx_file_paths.xml
中进行合并声明
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<paths>
<external-path name="path_1" path="."/>
<external-path name="path_2" path="."/>
</paths>
</resources >
但此处有一个风险,因为只有一个provider节点,所以如果面临各Library 对 authorities
参数值取值规则不同 则此方案不可用。
方案二 自定义provider
拓展性好,易于维护及拓展
自定义类继承FileProvider
并在Manifest
中引用
<provider
android:name="com.xx.sdk.xx.FileProvider"
android:authorities="${AD_APPLICATIONID}.FileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
看情况方案一与方案二可结合使用
网友评论