我搜索了很多問題,但我沒有找到一個可以解決我的問題。所以我在這裏:我爲自己的應用程序做了一個自定義的PIN鎖定活動,它作爲LAUNCHER活動運行。這是我在onCreate()方法中使用的代碼來檢查,如果這是程序的第一個運行(爲了運行相應的代碼,讓用戶建立自己的PIN的機會)Android:SharedPreferences默認值的一個字符串
if (sharedPinDatabase.getString("pin", "NO PIN SAVED").equals("")) {
Log.i("SECURITY", "NO PIN SAVED");
tvInstructionsPin.setText(" It appers that you havent saved a PIN. Enter new PIN below.");
}else{}
但是,每當我第一次運行應用程序(或清理所有應用程序數據)時,應用程序將跳過這段代碼並直接進入「輸入保存的PIN」部分(圖1)。我使用Log.i來檢查值,則給予鍵(「PIN」)之前,我輸入任何密碼本
Log.i("SECURITY", "PINs dont match Saved one is: " + sharedPinDatabase.getString("pin", "") + "entered is : " + etPinInput.getText().toString());
和我從這個塊的代碼得到的是「PIN碼不匹配保存一個是:輸入爲:「 如果我按下」確定「而不鍵入任何數字(將EditText留空),它將起作用並轉到下一個活動。 另外在應用程序的設置部分我做了這個(在的onClick運行)
SharedPreferences sharedPrefWrite = getContext().getSharedPreferences("PIN_PREFS_DATABASE", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPrefWrite.edit();
editor.putString("pin", "").commit();
Intent i = new Intent(getActivity(), LockScreen.class);
startActivity(i);
,由於某種原因它的工作原理(設置字符串的值時,「」),並得到我想要的屏幕(我的應用程序第一次運行做出的一個) 這一個(圖片2):