Мои общие настройки удаляются при обновлении приложения в магазине Google Play. - PullRequest
0 голосов
/ 12 июня 2018

Я создал класс для операций «запомни меня» на экране входа в систему.Я храню данные пользователя на SharedPreferences.Работает при отладке на Android Studio.Я изменяю versionCode и versionName на build.gradle файле.Все в порядке, 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
        );
    }
}

В манифесте. 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
    }
}

1 Ответ

0 голосов
/ 12 июня 2018

попробуйте так, как это работает для меня, здесь я сохраняю данные, используя ключ

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"),
                ""
        );
    }
}
...