我为&#34创建了一个课程;记得我"登录屏幕上的操作。我将用户数据存储在SharedPreferences
上。它在Android Studio上进行调试时有效。我在versionCode
文件上更改了versionName
和build.gradle
。一切都很好,SharedPreferences
数据是可用的。但是,当我从Google Play商店更新时,我的数据正在删除。谢谢你的回答。
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
}
}
答案 0 :(得分:1)
尝试这种方式为我工作,这里我使用密钥
保存数据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"),
""
);
}
}