检查用户是否从应用程序中浏览的代码:
public boolean isApplicationSentToBackground(final Context context) {
try {
ActivityManager am = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> tasks = am.getRunningTasks(1);
if (!tasks.isEmpty()) {
ComponentName topActivity = tasks.get(0).topActivity;
if (!topActivity.getPackageName().equals(
context.getPackageName())) {
return true;
}
}
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
protected void onPause() {
Log.i("Status", "onPause");
super.onPause();
SharedPreferences prefs =
PreferenceManager.getDefaultSharedPreferences(getBaseContext());
boolean security = prefs.getBoolean("prefSecurity", false);
try{
if(isApplicationSentToBackground(getApplicationContext()) == false){
if(security == true) {
SharedPreferences settings = getSharedPreferences(PREFS_NAME,
MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString("prefSecurityCheck", "putsis");
editor.commit();
}
}
} catch (Exception e) {
Toast.makeText(getApplicationContext(), "Something Went Wrong!",
Toast.LENGTH_SHORT).show();
}
}
我已经让该用户可以选择输入安全代码,然后才能看到该应用程序。它从 sharedpreferences 中检查我们是否需要询问安全码,如果它保存“putsis”,那么下次我们打开 mainactivity 时它会询问安全码,当输入正确的代码时,它会将 prefSecurityCheck 更改为“korras”并且没有代码检查。
目前有两个问题是:
当我进入应用程序设置或按下分享按钮时,它就像我离开了应用程序一样。
如果我按下最近按钮或有时主页按钮并重新打开它,它不会总是显示安全屏幕,我认为这是因为它没有足够快地将这些首选项保存到共享首选项。