Конфликтующие поставщики контента - PullRequest
4 голосов
/ 26 августа 2010

Я разрабатываю приложение, используя ContentProvider.Это заявлено в манифесте:

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

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

Теперь, когда я пытаюсь установить оба приложения, я получаю сообщение об ошибке INSTALL_FAILED_CONFLICTING_PROVIDER , очевидно, потому что обаAndroidManifest объявляют того же поставщика контента.

Есть ли способ сказать в Манифесте, что этот поставщик контента должен использоваться, только если он еще не существует?Или другой обходной путь?

Решение состоит в том, что полная версия переносит данные из провайдера демонстрационного контента в провайдера контента полной версии, но я бы предпочел этого избежать.

1 Ответ

5 голосов
/ 27 августа 2010

Решение было бы, что полный версия перенести данные из демо контент-провайдер до полной версии контент-провайдер, но я бы предпочел Избегайте этого.

Вот вероятная последовательность событий:

  1. Пользователь устанавливает облегченную версию
  2. Пользовательская версия Lite, хранение данных
  3. Пользователь обновляется до полной версии, но вы не копируете данные в соответствии с цитируемым вами отрывком выше
  4. Пользователь удаляет облегченную версию, удаляя ее данные
  5. Пользователь дает вам одну оценку на Маркете

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

...