Могут ли SharedPreferences быть общими для разных приложений Android?

#android #installation #package #instance #overwrite

#Android #настройки

Вопрос:

Как я проверил в описании API для getSharedPreferences(String, int), второй атрибут определяет режим доступности и может принимать 0 или MODE_PRIVATE для операции по умолчанию, MODE_WORLD_READABLE и MODE_WORLD_WRITEABLE для управления разрешениями.

Но в описании API есть это небольшое примечание:

Примечание: в настоящее время этот класс (android.content.SharedPreferences) не поддерживает использование в нескольких процессах. Это будет добавлено позже.

Более того, в книге Марка Л. Мерфи «Начало Android 2» он упомянул:

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

Я так запутался! означает ли это, что MODE_WORLD_READABLE и MODE_WORLD_WRITEABLE для getSharedPrefrences существуют, но ЕЩЕ НЕ ПОДДЕРЖИВАЮТСЯ на последнем уровне API???

Спасибо! Migan

Ответ №1:

Моя ссылка на книгу основана на этом комментарии.

Более того, создание любого файла MODE_WORLD_READABLE или (что еще хуже) MODE_WORLD_WRITEABLE — плохая идея. Вы теряете всякую надежду на безопасность.

Если вы хотите обмениваться данными между двумя приложениями, существует множество решений, таких как:

  • сервис с API, предоставляемым AIDL
  • сервис с API, предоставляемый через команды, отправленные через startService() , и ответы, отправленные через Messenger или createPendingResult() PendingIntent или что-то еще
  • поставщик контента
  • трансляция Intents

Все это позволяет вам определять разрешения для интеграции и позволяет контролировать степень детализации доступа.

Комментарии:

1. Спасибо за супер полный ответ! Я был просто сбит с толку, поскольку в J2ME хранилища записей можно легко разделить между различными приложениями, установив режим авторизации на AUTHMODE_ANY, хотя это не имеет безопасности и не рекомендуется. Вот почему я был удивлен, что Prefrences Android еще не поддерживает MODE_WORLD_READABLE и MODE_WORLD_WRITEABLE.