Белая маркировка с помощью 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
необходимо знать, какие полномочия использовать, чтобы связаться с нужным поставщиком.