【问题标题】:Conflicting content providers冲突的内容提供者
【发布时间】:2010-08-27 07:42:16
【问题描述】:

我正在使用 ContentProvider 开发应用程序。它在清单中声明:

<provider android:name="foor.bar.FooBarProvider"
          android:authorities="foo.bar.FoorBarProvider" />

一切正常,我可以访问提供程序。问题是我想创建我的应用程序的演示版本,并且我希望它共享相同的内容提供程序,因此当用户安装完整版本时,数据会保持同步。此外,应该可以只安装完整版或演示版。因此,我必须在 both 中包含我的内容提供者。

现在,当我尝试安装这两个应用程序时,我收到 INSTALL_FAILED_CONFLICTING_PROVIDER 错误消息,显然是因为两个 AndroidManifest 都声明了相同的内容提供程序。

有没有办法在 Manifest 中告诉这个内容提供者只有在它不存在时才应该使用?或者其他解决方法?

一个解决方案是完整版将数据从演示内容提供商迁移到完整版内容提供商,但我宁愿避免这样做。

【问题讨论】:

    标签: java android android-contentprovider


    【解决方案1】:

    一个解决方案是完整的 版本从演示迁移数据 完整版的内容提供者 内容提供者,但我宁愿 避免这种情况。

    以下是可能的事件顺序:

    1. 用户安装精简版
    2. 用户用户精简版,存储数据
    3. 用户升级到完整版,但您没有按照上面引用的段落复制数据
    4. 用户卸载精简版,删除其数据
    5. 用户在市场上给您一星评级

    您需要在第一次运行完整版时将数据从精简版克隆到完整版以避免此问题。

    【讨论】:

    • 好吧,我想要的是内容提供程序安装一次(由精简版或完整版,无论先安装什么),然后在用户安装另一个版本时重复使用。
    • @Julien:这是不可能的。内容提供者属于应用程序。他们卸载应用程序,卸载内容提供程序。
    • 好的,那我继续数据迁移和两个内容提供者。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    • 2015-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多