INSTALL FAILED CONFLICTING PROVIDER.png
在安裝Android應用時出現(xiàn)
INSTALL FAILED CONFLICTING PROVIDER
問題,是不是感覺很抓狂呢,下面就跟大家分享一下出現(xiàn)這個問題的原因及解決方案。
【問題原因】
在Android中authority要求必須是唯一的,比如你在定義一個provider時需要為它指定一個唯一的authority。如果你在安裝一個帶有provider的應用時,系統(tǒng)會檢查當前已安裝應用的authority是否和你要安裝應用的authority相同,如果相同則會彈出上述警告,并且安裝失敗。
【解決方案】
在定義provider是,使用軟編碼的形式,如下:
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:grantUriPermissions="true" android:exported="false">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
上述代碼中通過${applicationId}.fileprovider
的形式來指定provider的authorities,所以該provider的authorities會根據(jù)applicationId的不同而不同,從而避免了authorities的沖突問題。
那么如何使用剛才定義的authorities呢?
我們在定義authorities是采用了applicationId+fileprovider的形式,在獲取authorities的時候,我們就可以通過包名+fileprovider來獲取,代碼如下:
public final static String getFileProviderName(Context context) {
return context.getPackageName()+".fileprovider";
}