Белая маркировка с помощью ContentProvider

Я пытаюсь пометить свое приложение белым ярлыком, изменив мой проект приложения Android на проект библиотеки Android, а затем импортировать библиотеку в новый проект приложения Android.

Я столкнулся с проблемой, связанной с тем фактом, что мое приложение (читай: Библиотека проекта) содержит ContentProvider.

Когда я пытаюсь установить мой новый Android Application Project на эмулятор, консоль сообщает мне:

[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? Или есть способ обойти это? Нужно ли создавать новый ContentProvider в моем новом Android-проекте с новым именем?

Вот поставщик, указанный в манифесте моего проекта WhitelabelTest:

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

Я попытался изменить параметр имени с тем же результатом.

1 ответ

Решение

Означает ли это просто, что вы не можете установить оба приложения на одном устройстве, поскольку они используют один и тот же ContentProvider?

Невозможно установить оба приложения на одном устройстве, поскольку они оба пытаются объявить одни и те же права доступа (в android:authorities) в <provider>, Для данного органа может быть только один поставщик.

Это похоже на то, как нельзя установить два приложения с одинаковыми package,

Нужно ли создавать новый ContentProvider в моем новом Android-проекте с новым именем?

Я бы начал с рассмотрения, является ли ContentProvider необходимо, и, возможно, уронить его, если это не так.

В противном случае реализация ContentProvider может быть общим из проекта библиотеки. Тем не менее android:authorities должен быть уникальным, и поэтому любые клиенты этого ContentProvider необходимо знать, какие полномочия использовать, чтобы связаться с нужным поставщиком.

Другие вопросы по тегам