今天遇到一個(gè)問題,有用戶反饋從華為應(yīng)用市場(chǎng)下載一個(gè)新應(yīng)用時(shí),提示安裝失敗。
打開提示信息,查看失敗詳情??吹骄唧w的失敗信息是Conflicting Provider,Error Code:-13。另外系統(tǒng)還提示了和產(chǎn)生沖突的應(yīng)用名稱以及推薦的解決方法。
一般提示Provider沖突時(shí),很大可能是ContentProvider相同導(dǎo)致的。ContentProvider是Android的四大組件之一,但是平時(shí)用得比較少。ContentProvider一般用于跨進(jìn)程通信,進(jìn)行進(jìn)程間的數(shù)據(jù)交互和共享。這個(gè)特性決定了ContentProvider只能全局唯一,一旦有應(yīng)用先在手機(jī)上注冊(cè)了同名的Provider后,后面安裝的應(yīng)用就不能再使用相同的名字,安裝時(shí)就會(huì)出錯(cuò)。
檢查這兩個(gè)沖突的APK,果然在AndroidManifest.xml文件里看到相同的Provider設(shè)置:
和開發(fā)者商量之后,修改了其中一個(gè)應(yīng)用的ContentProvider的信息,增加了本應(yīng)用的包名信息,再安裝就成功了,問題解決。