我搜索了很多问题,但我没有找到一个可以解决我的问题。所以我在这里:我为自己的应用程序做了一个自定义的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):