在 google Play 商店更新应用程序时我的共享首选项被删除

My shared preferences are deleting when updating app on google play store

我在登录屏幕上为 "remember me" 操作创建了一个 class。我将用户数据存储在 SharedPreferences 上。它在 Android Studio 上进行调试时有效。我在 build.gradle 文件上更改了 versionCodeversionName。一切正常,SharedPreferences 数据可用。但是当我从 Google Play Store 更新时,我的数据正在删除。谢谢你的回答。

RememberMe.java : getLastUser() 返回的模型变量为空。

public class RememberMe {

    private SharedPreferences           sharedPreferences;
    private SharedPreferences.Editor    sharedEditor;
    public  static  int                 USERNAME_AND_PASSWORD = 0,
            USERNAME = 1;

    public RememberMe(Context context) {
        sharedPreferences  = PreferenceManager.getDefaultSharedPreferences(context);
        sharedEditor       = sharedPreferences.edit();
    }

    /**
     * @param userIdentity Example; username, email.
     * @param userPassword
     * @param isLastUser If this value is true 'getLastUser' function will get this user.
     */
    public void addUser(String userIdentity, String userPassword, boolean isLastUser){
        // Save user.
        sharedEditor.putString(userIdentity, userPassword);

        // Make last user.
        if (isLastUser){
            sharedEditor.putString("remember_me_last_user", userIdentity);
        }

        // Commit
        sharedEditor.apply();
    }

    @Nullable
    public String getUserPassword(String userIdentity){
        return sharedPreferences.getString(userIdentity, null);
    }

    public RememberMeModel getLastUser(int resultType){
        if (resultType == USERNAME_AND_PASSWORD){
            return new RememberMeModel(
                    sharedPreferences.getString("remember_me_last_user", null),
                    getUserPassword(sharedPreferences.getString("remember_me_last_user", null))
            );
        }

        return new RememberMeModel(
                sharedPreferences.getString("remember_me_last_user", null),
                null
        );
    }
}

在manifest.xml

android:allowBackup="true"
android:fullBackupContent="true"

在build.gradle

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.oka.okaoka"
        minSdkVersion 19
        targetSdkVersion 27
        versionCode 8
        versionName "v1.0.8"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        targetCompatibility 1.8
        sourceCompatibility 1.8
    }
}

尝试这种方式对我有用,这里我使用密钥保存数据

import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.support.annotation.Nullable;

public class RememberMe {

    public static SharedPreferences sharedPreferences;
    public static SharedPreferences.Editor sharedEditor;
    public static int USERNAME_AND_PASSWORD = 0,USERNAME = 1;
    public static String USER_IDENTITY_KEY = "user_identity_key";
    public static String USER_PASSWORD_KEY = "user_password_key";


    public RememberMe(Context context) {
        if (sharedPreferences == null) {
            sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
        }

        if (sharedEditor == null) {
            sharedEditor = sharedPreferences.edit();
        }
    }

    /**
     * @param userIdentity Example; username, email.
     * @param userPassword
     * @param isLastUser   If this value is true 'getLastUser' function will get this user.
     */
    public void addUser(String userIdentity, String userPassword, boolean isLastUser) {
        // Save user.
        //sharedEditor.putString(userIdentity, userPassword);//you need to pass key
        saveStr(USER_IDENTITY_KEY,userIdentity);
        saveStr(USER_PASSWORD_KEY,userPassword);

        // Make last user.
        if (isLastUser) {
            //sharedEditor.putString("remember_me_last_user", userIdentity);
            saveStr("remember_me_last_user",userIdentity);
        }



    }

    public static void saveStr(String key, String value) {
        sharedEditor.putString(key, value);
        sharedEditor.commit();
    }

    public static String getStr(String key) {
        return sharedPreferences.getString(key, "");
    }

    @Nullable
    public String getUserPassword() {
         return getStr(USER_IDENTITY_KEY);
    }

    public RememberMeModel getLastUser(int resultType) {
        if (resultType == USERNAME_AND_PASSWORD) {
            return new RememberMeModel(
                    getStr("remember_me_last_user"),
                    getUserPassword()
            );
        }

        return new RememberMeModel(
                getStr("remember_me_last_user"),
                ""
        );
    }
}