我手机上有超过5个应用程序,他们需要与内容提供商共享数据,并且每个应用程序首先安装,必须创建表和URI,所以在所有应用程序中我应该在清单中声明提供者,以授予应用程序权限初始化提供者。但是我收到安装错误:INSTALL_FAILED_CONFLICTING_PROVIDER错误,我该如何处理这个问题?
答案 0 :(得分:2)
我手机上有超过5个应用程序需要与内容提供商共享数据
最有可能的是,这不是一个好主意。
因此,在所有应用程序中,我应该在清单中声明提供程序,以授予应用程序权限以初始化提供程序
那不行。
但我收到安装错误:INSTALL_FAILED_CONFLICTING_PROVIDER错误
这就是为什么不起作用的原因。
我该如何处理这个问题?
假设目前这是一个好主意,您可以发送应用<provider>
标记为android:enabled="false"
。然后,第一个应用可能会尝试访问ContentProvider
,当确定其他人没有设置ContentProvider
时,它可以自行启用(请参阅PackageManager
和{{1} })。
因此,我们假设您的五个应用程序名为A,B,C,D和E.首先安装A.用户运行它,A看到没有setComponentEnabledSetting()
,并启用它自己的。用户继续安装B,C,D和E,他们都使用A的ContentProvider
来存储他们的数据。用户现在卸载A. B,C,D和E将丢失所有数据,因为在卸载A时它们的数据会消失。用户很可能不会欣赏这一点。
唯一一个好主意的情况是B,C,D和E应该完全依赖于A.在这种情况下,B,C,D和E不需要自己的{{ 1}},因为他们总是可以使用A,如果A不存在,那就是用户的错。
答案 1 :(得分:0)
您应该在每个应用的清单中定义提供商,如下所示:
android:authorities="com.app.SomeContentProvider${applicationId}"
您的提供商对每个应用都是独一无二的。