全部好,
我有三项活动。 A,B& C.其中A是启动活动,B包含登录屏幕,其中包含用户ID和密码文本字段以及一个登录按钮。当我点击登录时,它会转到欢迎屏幕,在屏幕C上显示用户名。
这里我想实现Shared Prefrence,以便我可以为用户存储用户ID和密码,这样用户就不必再次插入用户ID和密码了。再次和spllash屏幕后用户直接进入欢迎屏幕。
我读了几篇关于共享prefrence的文档,我开始知道共享prefrence有两种类型,一种是活动级别,另一种是appplication级别。
在这种情况下,PLease帮助我如何实现这一点......非常紧急..
答案 0 :(得分:3)
从活动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);
答案 1 :(得分:3)
这相对容易。您可以将用户名和密码直接存储在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
请告诉我这是否对您有所帮助。
灵光
答案 2 :(得分:0)
这是使用共享偏好的最佳方式,只需调用此方法
即可存储共享偏好
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);
}
调用此方法并传递密钥
ClassName.getDefaults("Key",Context);
答案 3 :(得分:0)
在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");
答案 4 :(得分:0)
存储用户名和密码是一种不好的做法,而是使用JWT。从您的回复中获取JWT令牌,然后将其存储在您的共享首选项中。如果你的API没有回复任何JWT,那么至少在保存之前用你的用户名和密码哈希,但它也是不安全的。