Как я могу использовать файл SharedPreferences в двух разных приложениях для Android?

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

Я попытался следовать этому руководству, которое дало мне довольно хорошее представление о том, как иметь настройки в одном приложении, которые могут быть прочитаны другим. По сути, я создаю новый контекст с помощью myContext = createPackageContext("com.example.package",Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);, а затем вызываю myContext.getSharedPreferences("pref_name", Context .MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);Однако я не могу успешно записать настройки из внешнего приложения — (SharedPreferences.Editor).commit() возвращает false, и я получаю предупреждение в logcat о невозможности редактирования pref_name.xml.bak.

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

18
задан matt5784 14 June 2012 в 00:26
поделиться