SharedPreferences не удаляется при удалении пользователем приложения
Кто-нибудь сталкивался с этой проблемой на устройстве Nexus 6P? Я получаю эту проблему только на Nexus 6P (под управлением Google Fi).
Когда я устанавливаю приложение, есть ключ для userIsLoggedIn
внутри SharedPreferences
,
Этот блок:
boolean userIsLoggedIn = SharedPrefs.userIsLoggedIn(this);
// Then in another class...
public static boolean userIsLoggedIn(Context context) {
// For users updating apps, if the previous key-value is a string, convert it to boolean
try {
return context.getSharedPreferences(LOGIN_FILE, Context.MODE_PRIVATE)
.getBoolean(USER_LOGGED_IN, false);
} catch (ClassCastException e) {
Logger.e(TAG, e.getMessage());
context.getSharedPreferences(LOGIN, Context.MODE_PRIVATE)
.edit()
.putBoolean(USER_LOGGED_IN, false)
.commit();
return context.getSharedPreferences(LOGIN, Context.MODE_PRIVATE)
.getBoolean(USER_LOGGED_IN, false);
}
}
Теперь это должно вернуться false
при новой деинсталляции, но при отладке при новой установке при запуске приложения я получаю следующее.
Я также запускаю Proguard, если это имеет значение, при запуске устройства на APK без Proguard он работает нормально. Запуск proguard на любых других устройствах работает нормально.
3 ответа
Поскольку Nexus 6P работает под управлением Android M, я думаю, что автоматическое резервное копирование является проблемой.
Я думаю, что вы можете использовать allowBackup, чтобы остановить это.
Проверьте этот ответ: /questions/7664156/android-m-strannaya-problema-s-obschimi-nastrojkami/7664172#7664172
В версиях Android M и выше они хранят резервные копии приложений в драйвере Google, вы можете отключить это с помощью, перейдите к файлу манифеста вашего проекта в разделе Раздел приложений android:allowBackup="true"
в ложь. и ты готов идти.
Вы можете добавить в свой манифест:
android:fullBackupContent="false"