描述
將原來項目中的Library導入到新項目中。
當手機上安裝著原來的項目時,將新項目運行到手機上時,報錯:
image.png
當然,兩個項目包名相同時,也會報上述類似錯誤(子module可以相同)。
這次的罪魁禍首就是 content provider,跨進程通信。
想一想就可以理解了,如果兩個provider相同,并且安裝到同一個手機上,那么接受消息時就會混亂了。
解決
<provider
android:name="com.*.IMProvider"
android:authorities="com.*.ipc.provider"
android:exported="false"
android:process=":core" />
最重要的就是 authorities ,這個屬性絕對不能相同,其他可以(親測)。
authorities 是唯一標識這個 provider 的,不能相同。
所以修改兩個項目 authorities 不相同就可以了