web-dev-qa-db-fra.com

Les préférences partagées ne sont pas supprimées lors de la désinstallation de l'application par l'utilisateur

Quelqu'un a-t-il rencontré ce problème sur un appareil Nexus 6P? Je ne reçois ce problème que sur un Nexus 6P (exécutant Google Fi).

Lorsque j'installe l'application, il y a une clé pour userIsLoggedIn à l'intérieur SharedPreferences.

Ce bloc:

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);
    }
}

Maintenant, cela devrait retourner false sur une nouvelle désinstallation, mais en le déboguant sur une nouvelle installation, j'obtiens ce qui suit au démarrage de l'application.

enter image description here

J'exécute également Proguard si cela importe, lorsque vous exécutez l'appareil sur un APK non proguard activé, il fonctionne correctement. L'exécution de proguard sur tout autre appareil fonctionne correctement.

38
AndyRoid

Étant donné que Nexus 6P fonctionne Android M, je pense que Sauvegardes automatiques est le problème.

Je pense que vous pouvez utiliser allowBackup pour arrêter cela.

Vérifiez cette réponse: https://stackoverflow.com/a/32010582/336312

76
code2be

Dans Android M et versions supérieures, ils conservent les sauvegardes d'application dans le pilote Google, vous pouvez désactiver cela en utilisant, allez dans votre projet manifeste fichier sous Application ensemble de sections Android:allowBackup="true" à false.et vous êtes prêt à partir.

10
Ashana.Jackol

vous pouvez ajouter à votre manifeste:

        Android:fullBackupContent="false"
9
Mina Farid