2010-11-08 236 views
1

HI全部,共享首选项Android

我有三项活动。 A,B & C.其中A是飞溅活动和B包含登录屏幕,其中包括用户ID和密码文本字段和一个登录按钮。当我点击登录时,它将我带到欢迎屏幕上,显示屏幕C上的用户名称。

这里我想实现Shared Prefrence,这样我就可以存储用户的用户标识和密码,以便用户不必插入用户名和密码再次&再次splassh屏幕用户直接去欢迎屏幕后。

我读了一些关于共享prefrence的文档,并且我知道共享prefrence有两种类型,一种是活动级别,另一种是应用程序级别。

请帮我在这情况下,我怎么能实现这个...它非常紧迫请..

回答

3

这是比较容易的。这样做的是,密码可在全球范围内

String username = p.getString("username", ""); 
String password = p.getString("password", ""); 

问题:您可以在SharedPreference如下直接存储的用户名和密码:

SharedPreferences p = PreferenceManager.getDefaultSharedPreferences(context); 

p.edit().putString("username", username).commit(); 
p.edit().putString("password", password).commit(); //SECURITY HAZARD: read below... 

然后,你可以这样获取。你需要有一种方法来防止他人查看它。这样做的方式是在保存密码时加密密码,并在使用对称密钥加载时解密密码。这里是关于加密的教程:http://android.voxisland.com/code_examples/How_to_encrypt_and_decrypt_strings.rhtml

让我知道,如果这可以帮助你。

灵光

+0

HI亲爱的。感谢您的答复....它的一个应用程序级别或活动级别???为了自动记住我需要在活动A中实现它? – 2010-11-08 14:44:11

+0

应用程序级别。自动记住只是表示您将其保存在首选项中。当你得到它们时,你应该检查它们是否为空并再次询问用户。 – Emmanuel 2010-11-08 15:06:49

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); 
+0

嗨..谢谢您的回复.. – 2010-11-08 14:36:02

+0

第二个代码我需要写在A?请回复 – 2010-11-08 14:36:26

+0

从“活动”你需要阅读的信息。它可能是A,B或C. – Macarse 2010-11-08 14:56:25

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); 
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"); 
0

存储用户名和密码是一种糟糕的做法,而不是使用JWT。从您的回复中获取JWT令牌,然后将其存储在您的共享首选项中。如果您的API没有回复任何JWT,那么至少在保存之前对您的用户名和密码进行哈希处理,但它也是不安全的。