web-dev-qa-db-ja.com

ユーザーがアプリケーションをアンインストールしても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が返されますが、新規インストールでこれをデバッグすると、アプリの起動時に次のようになります。

enter image description here

問題があれば、Proguardも実行します。Proguardが有効になっていないAPKでデバイスを実行すると、正常に実行されます。他のデバイスでproguardを実行しても問題ありません。

38
AndyRoid

Nexus 6PがAndroid Mを実行しているので、 自動バックアップ が問題だと思います。

allowBackup を使用して停止できると思います。

この回答を確認してください: https://stackoverflow.com/a/32010582/336312

76
code2be

Android M以上のバージョンでは、Googleドライバーでアプリケーションのバックアップを保持します。これを無効にするには、プロジェクトに移動しますmanifest file ApplicationセクションセットAndroid:allowBackup="true"をfalseに変更します。

10
Ashana.Jackol

マニフェストに追加できます:

        Android:fullBackupContent="false"
9
Mina Farid