共享首选项Android

时间:2010-11-08 14:25:02

标签: android

全部好,

我有三项活动。 A,B& C.其中A是启动活动,B包含登录屏幕,其中包含用户ID和密码文本字段以及一个登录按钮。当我点击登录时,它会转到欢迎屏幕,在屏幕C上显示用户名。

这里我想实现Shared Prefrence,以便我可以为用户存储用户ID和密码,这样用户就不必再次插入用户ID和密码了。再次和spllash屏幕后用户直接进入欢迎屏幕。

我读了几篇关于共享prefrence的文档,我开始知道共享prefrence有两种类型,一种是活动级别,另一种是appplication级别。

在这种情况下,PLease帮助我如何实现这一点......非常紧急..

5 个答案:

答案 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,那么至少在保存之前用你的用户名和密码哈希,但它也是不安全的。