Android PreferenceActivity для создания предпочтения MODE_WORLD_WRITEABLE для разных приложений - PullRequest
3 голосов
/ 21 августа 2010

У меня есть несколько приложений, которые обмениваются определенными данными через настройки. Каждое приложение устанавливает свои предпочтения через PreferenceActitivity (из xml). Два вопроса:

Как использовать / редактировать настройки, созданные одним приложением в другом приложении. Если я выясню, как создать настройки MODE_WORLD_WRITEABLE, используя PreferenceActivity, это решит проблему.

 SharedPreferences prefs = getSharedPreferences(
          <String referring to another package´s prefs>, MODE_WORLD_WRITEABLE);
        HashMap<String, String> map = (HashMap<String, String>) prefs
          .getAll();


        String str = map.toString();
        tv.setText(str);

Выше кода возвращается {}

  • Во-вторых, как мне использовать addPreferencesFromIntent (i) - я получаю исключение NullPointerException, даже если намерение не равно Null.

Заранее спасибо за помощь.

Лучший, Самир

1 Ответ

6 голосов
/ 24 августа 2010

Для безопасного доступа к настройкам из другого приложения установите тот же android: sharedUserId в манифесте.Это позволит вам получить доступ к настройкам и файлам в режиме MODE_PRIVATE (или в безопасном режиме).

После длительного времени мы поняли, что это само по себе не сработает, и нужно создать контекст пакета первого приложения для доступа к файлам во втором приложении:

try {
            Context c = createPackageContext(com.app.first, MODE_PRIVATE);
            SharedPreferences prefs = c.getSharedPreferences(
                    "com.app.first_preferences", MODE_PRIVATE);

        } catch (NameNotFoundException e) {
            e.printStackTrace();
        }

Большое спасибовам @CommonsWare и Картику Шанмугаму за помощь!

...