Открыть SharedPreferences вне пакета

203
25 июля 2017, 17:25

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

Answer 1

Можно использовать SharedPreferences с флагом Context.MODE_WORLD_READABLE.

В первом приложении записываем значения:

SharedPreferences sharedPreferences = getSharedPreferences("some_prefs", Context.MODE_WORLD_READABLE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("SOME_VALUE_KEY", "some_value");
editor.commit();

Во втором читаем их:

Context context = createPackageContext("%FIRST_APP_PACKAGE%", 0);
SharedPreferences sharedPreferences = context.getSharedPreferences("some_prefs", Context.MODE_PRIVATE);
String value = sharedPreferences.getString("SOME_VALUE_KEY", "Empty value");

Однако, флаги Context.MODE_WORLD_READABLE и Context.MODE_WORLD_WRITEABLE в API level 17 помечены как deprecated с указанием, что это плохо с точки зрения безопасности.

READ ALSO
Подсчет индексов

Подсчет индексов

Есть таблица со столбцом boolean, нужно подсчитать кол-во выбранных строк, когда boolean = true, и это кол-во занести в переменнуюНашел индексы строк...

351
MP3 файлы в Java

MP3 файлы в Java

Есть ли способ проиграть музыку в java? Только без xml, и тп

221
Invoke method with parameters

Invoke method with parameters

У меня есть проблема с рефлексией

209
Android: как правильно восстановить состояние после того, как приложение было убито ОС

Android: как правильно восстановить состояние после того, как приложение было убито ОС

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

218