描述
将原来项目中的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 不相同就可以了