SharedPreferences not being removed on user uninstalling application

AndroidSharedpreferencesNexus 6p

Android Problem Overview


Has anyone encountered this issue on a Nexus 6P device? I am only getting this issue on a Nexus 6P (running Google Fi).

When I install the app there is a key for userIsLoggedIn inside SharedPreferences.

This block:

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

Now this should return false on a new uninstall but debugging this on a fresh install I get the following on App Startup.

enter image description here

I also running Proguard if that matters, when running the device on a non-proguard enabled APK it runs ok. Running proguard on any other devices runs fine.

Android Solutions


Solution 1 - Android

Since Nexus 6P is running Android M, I think Automatic Backups is the issue.

I think You can use allowBackup to stop that.

Check this answer: https://stackoverflow.com/a/32010582/336312

Solution 2 - Android

In android M and above versions they keep application backups in google driver, you can disable this by using, go to your project manifest file under Application section set android:allowBackup="true" to false.and you are good to go.

Solution 3 - Android

you can add to your manifest:

        android:fullBackupContent="false"

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAndyRoidView Question on Stackoverflow
Solution 1 - Androidcode2beView Answer on Stackoverflow
Solution 2 - AndroidAshana.JackolView Answer on Stackoverflow
Solution 3 - AndroidMina FaridView Answer on Stackoverflow