[英]Using Shared Preferences in Android
我有三个活动,A、B 和 C。其中 A 是启动活动,B 包含登录屏幕,其中包含用户 ID 和密码文本字段以及一个登录按钮。 当我单击登录时,它会将我带到欢迎屏幕,在屏幕 C 上显示用户名。
在这里,我想实现共享首选项,以便我可以存储用户的用户名和密码,这样用户就不必一次又一次地插入用户名和密码,并且在启动屏幕后用户直接进入欢迎屏幕。
我阅读了一些关于共享首选项的文档,我了解到共享首选项有两种类型,一种是活动级别,另一种是应用程序级别。
我该如何实施?
像这样从活动 A 中编写它:
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
Editor editor = sp.edit();
editor.putString("YOUR_KEY", "username");
editor.commit();
你可以在之后阅读它:
SharedPreferences p = PreferenceManager.getDefaultSharedPreferences(this);
String username = p.getString("YOUR_KEY", null);
这相对容易。 您可以将用户名和密码直接存储在 SharedPreference 中,如下所示:
SharedPreferences p = PreferenceManager.getDefaultSharedPreferences(context);
p.edit().putString("username", username).commit();
p.edit().putString("password", password).commit(); //SECURITY HAZARD: read below...
然后你可以像这样检索它:
String username = p.getString("username", "");
String password = p.getString("password", "");
这样做的问题是密码在全球范围内可用。 您需要有一种方法来防止其他人查看它。 这样做的方法是在保存密码时加密密码,并在使用对称密钥加载密码时解密密码。 这是加密教程: http : //android.voxisland.com/code_examples/How_to_encrypt_and_decrypt_strings.rhtml
如果这对您有帮助,请告诉我。
伊曼纽尔
这是使用共享首选项的最佳方法,只需调用此方法
存储共享首选项
public static void setDefaults(String key, String value, Context context) {
SharedPreferences prefs =
PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = prefs.edit();
editor.putString(key, value);
editor.commit();
}
调用此方法并像这样传递参数
Classname.setsetDefaults("key","Value",context);
获得共享价值
public static String getDefaults(String key, Context context) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
return preferences.getString(key, null);
}
调用这个方法并传递key
ClassName.getDefaults("Key",Context);
在android中使用共享首选项
public class SharedPref {
public static void setValue(String key, String value, Context context) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = prefs.edit();
editor.putString(key, value);
editor.commit();
}
public static String getValue(String key, Context context) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
return preferences.getString(key, null);
}
public static void setAlertDialog(Context mContext,String title,String message)
{
AlertDialog alertDialog = new AlertDialog.Builder(mContext).create();
alertDialog.setTitle(title);
alertDialog.setMessage(message);
alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
alertDialog.show();
}
}
并从类使用以下代码设置和获取值
SharedPref.setConfig("key","value",Context);
SharedPref.getConfig("key",Context);
SharedPref.setAlertDialog(Context,"title","Content to print");
存储用户名和密码是一种不好的做法,而不是使用 JWT。 从您的响应中获取 JWT 令牌,然后将其存储在您的共享首选项中。 如果您的 API 没有返回任何 JWT 回复,那么至少在保存之前散列您的用户名和密码,但这也是不安全的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.