Android7.0對文件的訪問,框架使用StrictMode Api禁止我們的應用對外部(跨越應用分享)公開file://,在訪問文件時需要增加FileProvider授權,這里不再贅述這個問題;
當應用中存在多個FileProvider的時候(比如在引入了一個第三方開源,例takePhoto,開源框架為了適配android7.0文件的訪問也使用了FileProvider),在編譯時便會報錯:
在報了錯誤信息之后androidStudio也給出了一個解決方法,增加 tools:replace="android:authorities"屬性,這么一來編譯時通過了,但是在使用takePhoto的時候卻出現了致命錯誤UndeclaredThrowableException;
此時我們就會想到使用自定義的FileProvider來避免沖突,既自己寫一個FileProvider繼承自android.support.v4.content.FileProvider,然后在清單文件里完成配置;特別要注意一點(被這個細節小坑了一下),在配置自定義的FileProvider的時候,resource指向的xml一定要保證唯一,比如takePhoto使用了最原始的命名file_paths.xml,那么自定義的FileProvider需要用另一個xml配置(比如file_paths1.xml),避免takePhoto使用的異常(壓縮圖片失敗等問題), 我自己花了較多的時間解決了這個Bug,希望能幫助后來人。
~~