2010-11-08 233 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,那麼至少在保存之前對您的用戶名和密碼進行哈希處理,但它也是不安全的。