Работа с общими настройками, хранящимися в библиотеке - PullRequest
4 голосов
/ 14 августа 2010

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

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

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

1 Ответ

3 голосов
/ 18 августа 2010

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

В документации API указано, что вы не можете поделиться префиксами вне заданного процесса, поэтому возможно, что, поскольку у вас (вероятно) есть два разных пакета (один для lib, один для верхнего уровня), вы получаете префы в библиотеке vs приложение верхнего уровня из разных файлов?

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

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

Кроме того, это позволит вам иметь разные предпочтения для полного и свободного (что в любом случае является поведением по умолчанию, так как они будут храниться в отдельных файлах предпочтений), а затем вы можете отправить нужную информацию в библиотеку на основе lib. по версии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...