Как использовать одинаковые полномочия ContentProvider в бесплатных и платных версиях приложения? - PullRequest
6 голосов
/ 22 мая 2011

Я начал использовать Проекты библиотек Android для консолидации кода моей платной и бесплатной версии.

Я столкнулся с проблемой, связанной с моим ContentProvider.Поскольку ContentProvider определен в классе библиотеки, оба приложения используют одинаковые права доступа.Это означает, что Android препятствует установке второго приложения (в любом порядке) из-за ошибки INSTALL_FAILED_CONFLICTING_PROVIDER.

05-22 11:14:40.563: WARN/PackageManager(102): Can't install because provider name com.cfms.android.podcast (in package com.cfms.android.podcastlite) is already used by com.cfms.android.podcastpaid
05-22 11:14:40.563: WARN/PackageManager(102): Package couldn't be installed in /data/app/com.cfms.android.podcastlite-2.apk

Как я могу решить эту проблему?В идеале я хотел бы, чтобы права доступа были одинаковыми для каждой версии приложения, поэтому мне не нужно добавлять кучу исключений в общую библиотеку кода.Если это невозможно, как я должен идти вперед?

Ответы [ 2 ]

6 голосов
/ 22 мая 2011

Просто невозможно иметь два приложения на одном устройстве с разными провайдерами, использующими одинаковые права доступа.

http://hustleplay.wordpress.com/2010/02/28/android-install_failed_conflicting_provider/

полномочия поставщика дубликатов Android .

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

0 голосов
/ 20 сентября 2011

Не могли бы вы попробовать что-нибудь подобное?

http://ncsoftworks.com/forums/discussion/6/sharedpreferences-between-applications

Кроме того, разве поставщик контента не является только частным именем встроенной папки linux? И разве контент-провайдер не является просто файлом базы данных SQLite внутри этой личной папки?

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

В любом случае, я просто размышляю вслух. Мне придется поэкспериментировать с этим. Я просто публикую это, чтобы сэкономить время на случай, если кто-то обнаружит ошибку в моих предположениях (до того, как у меня будет время провести эксперимент).

Примечание: я сказал имя пакета приложения, а не имя пакета активности. Насколько я понимаю, приложения Android обычно содержат два имени пакета (хотя мастер проекта Eclipse New обычно помечает оба пакета одним и тем же именем, создавая впечатление, что существует только одно имя пакета)

...