Протестировано на Android 4.3. У меня есть два приложения: com.my.app.first
и com.my.app.second
. В своей деятельности я хочу читать настройки из другого приложения. Я решил использовать тот же идентификатор пользователя для обоих моих приложений:Как читать SharedPreferences другого приложения (тот же идентификатор пользователя)?
android:sharedUserId="com.my.app"
Я всегда загружать свои предпочтения, как это:
prefs = getSharedPreferences("MyAppPreferences", Context.MODE_PRIVATE);
Теперь в моем втором приложении я делаю следующее:
try {
Context context = createPackageContext("com.my.app.first", Context.CONTEXT_IGNORE_SECURITY);
// context.getPackageName() does indeed return "com.my.app.first"
// Note: Context.MODE_WORLD_READABLE makes no difference here!
prefs = context.getSharedPreferences("MyAppPreferences", Context.MODE_PRIVATE);
}
prefs.mFile
ошибочно указывает на /data/data/com.my.app.second/shared_prefs/MyAppPreferences.xml
.
Очевидно, что вызов getSharedPreferences возвращает предпочтений для текущего приложения, хотя я использовал контекст другого приложения. Что я делаю не так? Пожалуйста помоги!
в приложении, которое вы создаете SharedPrefs вы установите режим как MODE_WORLD_READABLE? – JimBoyHac
Нет. И это не нужно, так как используется тот же 'sharedUserId'. – l33t