0

我试图通过将我的 Android 应用程序项目更改为 Android 库项目,然后将库导入新的 Android 应用程序项目来为我的应用程序添加白标签。

我遇到了一个问题,即我的应用程序(阅读:图书馆项目)包含一个 ContentProvider。

当我尝试将新的 Android 应用程序项目安装到模拟器上时,控制台告诉我:

[2014-01-24 13:35:39 - WhitelabelTest] Installation error: INSTALL_FAILED_CONFLICTING_PROVIDER
[2014-01-24 13:35:39 - WhitelabelTest] Please check logcat output for more details.
[2014-01-24 13:35:39 - WhitelabelTest] Launch canceled!

根据logcat:

01-24 13:38:52.217: W/PackageManager(58): Can't install because provider name com.myapp.app.db.providers.MyProvider (in package com.example.whitelabeltest) is already used by com.myapp.app
01-24 13:38:52.227: W/PackageManager(58): Package couldn't be installed in /data/app/com.example.whitelabeltest-2.apk

这是否仅仅意味着您不能将两个应用程序安装在同一设备上,因为它们使用相同的 ContentProvider?或者有没有办法解决这个问题?我是否需要在我的新 Android 项目中创建一个新的 ContentProvider 并使用新名称?

这是我的 WhitelabelTest 项目清单中列出的提供程序:

<provider
            android:name="com.myapp.app.db.providers.MessagesProvider"
            android:authorities="com.myapp.app.db.providers.MessagesProvider"
            android:exported="false" />

我试图用相同的结果更改名称参数。

4

1 回答 1

1

这是否仅仅意味着您不能将两个应用程序安装在同一设备上,因为它们使用相同的 ContentProvider?

您不能将这两个应用程序安装在同一设备上,因为它们都试图android:authorities<provider>. 给定权限只能有一个提供者。

这类似于您不能同时安装两个应用程序package

我是否需要在我的新 Android 项目中创建一个新的 ContentProvider 并使用新名称?

我会首先考虑是否需要 a ContentProvider,如果不需要,可能会放弃它。

否则,实现ContentProvider可以是库项目中的常见实现。但是,android:authorities必须是唯一的,因此任何客户都ContentProvider需要知道使用正确的权限来联系正确的提供者。

于 2014-01-24T20:35:02.117 回答