解決 INSTALL FAILED CONFLICTING PROVIDER的問(wèn)題方法

在安裝Android應(yīng)用時(shí)出現(xiàn)INSTALL FAILED CONFLICTING PROVIDER問(wèn)題,是不是感覺很抓狂呢,下面就跟大家分享一下出現(xiàn)這個(gè)問(wèn)題的原因及解決方案。
問(wèn)題原因
在Android中authority要求必須是唯一的,比如你在定義一個(gè)provider時(shí)需要為它指定一個(gè)唯一的authority。如果你在安裝一個(gè)帶有provider的應(yīng)用時(shí),系統(tǒng)會(huì)檢查當(dāng)前已安裝應(yīng)用的authority是否和你要安裝應(yīng)用的authority相同,如果相同則會(huì)彈出上述警告,并且安裝失敗。
解決方案
在定義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>上述代碼中通過(guò)${applicationId}.fileprovider的形式來(lái)指定provider的authorities,所以該provider的authorities會(huì)根據(jù)applicationId的不同而不同,從而避免了authorities的沖突問(wèn)題。
那么如何使用剛才定義的authorities呢?
我們?cè)诙xauthorities是采用了applicationId+fileprovider的形式,在獲取authorities的時(shí)候,我們就可以通過(guò)包名+fileprovider來(lái)獲取,代碼如下:
public final static String getFileProviderName(Context context){ return context.getPackageName()+".fileprovider";}感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
新聞熱點(diǎn)
疑難解答
圖片精選