2012-11-29 60 views
0

我想比較字符串從EditText字段到共享首選項中的字符串。如果字符串匹配新的活動開始。 Sharedpreferenced中的字符串使用Base64進行編碼。我試圖在解碼後將編輯文本字符串與sharedpreferences字符串進行比較,但無法獲得正確的編碼。我怎樣才能正確地編碼。例子表示讚賞。我的比較器在線路77和78字符串比較瓦特/如果語句

44. public void onClick(View arg0) { 
45.  
46. sp=this.getSharedPreferences("AccessApp", MODE_WORLD_READABLE); 
47. 
48. 
49. 
50. 
51. byte[] key = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5 }; 
52. 
53. 
54. try { 
55. user = sp.getString("USERNAME_KEY", null); 
56.  String decryptedUser = decrypt(user, key); 
57.   
58.   
59. } 
60. catch (Exception e) { 
61. // TODO Auto-generated catch block 
62. e.printStackTrace(); 
63. } 
64. try { 
65.  pass = sp.getString("PASSWORD_KEY", null); 
66.  String decryptedPass = decrypt(pass, key); 
67.  
68.   
69. 
70. } catch (Exception e) { 
71. // TODO Auto-generated catch block 
72. e.printStackTrace(); 
73. } 
74. 
75. if(lBttn.equals(arg0)){ 
76.  
77.  if((uname.getText().toString().equals(decryptedUser)) && 
78.  (pword.getText().toString().equals(decryptedPass))) 
79.  
80.   { 
81.   Toast.makeText(this, "You are Logged In", 20000).show(); 
82.     
83.    Intent intent; 
84.    intent=new Intent(this,details.class); 
85.    startActivity(intent); 
86.    flag=1; 
87.   } 
+0

什麼一些Log.d調味你的代碼(),顯示你在哪裏,你的琴絃實際上是誰? Usuallz這有助於瞭解發生了什麼 –

+0

這是什麼聲明「if(lBttn.equals(arg0))」? 你的結果有什麼問題?我認爲如果條件好。它會重新產生錯誤的結果嗎? –

+0

引用了OnClick方法。 – user1165694

回答

8

有很多decryptedUserdecryptedPass各2份。一對在try塊內,另一對作爲成員。它們在第77行總是空的,因爲您將解密的值分配給您從不使用的不同變量(第56和66行)。將整個代碼移到一個try塊中。

public void onClick(View arg0) { 
    ... 
    ... 
    String decryptedUser; 
    String decryptedPass; 
    try { 
     user = sp.getString("USERNAME_KEY", null); 
     decryptedUser = decrypt(user, key); 
     pass = sp.getString("PASSWORD_KEY", null); 
     decryptedPass = decrypt(pass, key); 
     /* Your if statements follow from here */ 
     ... 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

} 
+0

謝謝你指出。不能相信我忽略了這一點。簡直太神奇了。 – user1165694