在用户卸载应用程序上未删除SharedPreferences

时间:2016-01-27 05:15:16

标签: android sharedpreferences nexus-6p

有没有人在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但是在全新安装时调试它我在App Startup上得到以下内容。

enter image description here

如果重要的话,我也运行Proguard,当在非proguard启用的APK上运行设备时,它运行正常。在任何其他设备上运行proguard运行正常。

3 个答案:

答案 0 :(得分:70)

由于Nexus 6P运行的是Android M,我认为问题是Automatic Backups

我认为你可以使用allowBackup来阻止它。

检查此答案:https://stackoverflow.com/a/32010582/336312

答案 1 :(得分:7)

在Android M及以上版本中,他们将应用程序备份保留在谷歌驱动程序中,你可以通过使用, 转到应用部分设置android:allowBackup="true"下的项目清单文件为false。你很高兴。

答案 2 :(得分:7)

您可以添加到您的清单中:

        android:fullBackupContent="false"