方案一 合并資源文件聲明
簡單粗暴速度快
當面臨兩個及以上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>
看情況方案一與方案二可結合使用