0

检查用户是否从应用程序中浏览的代码:

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”并且没有代码检查。

目前有两个问题是:

当我进入应用程序设置或按下分享按钮时,它就像我离开了应用程序一样。

如果我按下最近按钮或有时主页按钮并重新打开它,它不会总是显示安全屏幕,我认为这是因为它没有足够快地将这些首选项保存到共享首选项。

4

0 回答 0