阻止/禁用最近的应用按钮

Taz*_*azz 13 android android-navigation

我知道这个问题在此之前被问过Android禁用最近的任务按钮,就像在SureLock中一样,但由于答案没有用,所以也许有些人可以分享这个被遗忘的事情.

我也尝试过:

private void closeRecents() {
     activ.sendBroadcast(new Intent("com.android.systemui.recent.action.CLOSE"));
     Intent closeRecents = new Intent("com.android.systemui.recent.action.TOGGLE_RECENTS");
     closeRecents.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
     ComponentName recents = new ComponentName(SYSTEM_UI_PACKAGE_NAME, RECENTS_ACTIVITY);
     closeRecents.setComponent(recents);
     activ.startActivity(closeRecents);
}
Run Code Online (Sandbox Code Playgroud)

但没有运气

Ari*_*Roy 74

这样做并不困难.我已经在我的一个应用程序中实现了它,它运行得很好.

步骤1

将此权限添加到该manifest.xml文件

<uses-permission android:name="android.permission.REORDER_TASKS" />
Run Code Online (Sandbox Code Playgroud)

第2步

将此代码Activity放在您要阻止/禁用最近的应用程序按钮的任何代码中

 @Override
 protected void onPause() {
        super.onPause();

        ActivityManager activityManager = (ActivityManager) getApplicationContext()
                .getSystemService(Context.ACTIVITY_SERVICE);

        activityManager.moveTaskToFront(getTaskId(), 0);
}
Run Code Online (Sandbox Code Playgroud)

我尝试了几种设备,它运行得很好.按最近的应用程序按钮可能会使屏幕变黑不到一秒钟,但会重新启动您的活动.

  • 这为我节省了很多有关锁定应用程序的费用。谢谢!(我也没有得到黑色闪烁-不是我会介意的) (2认同)

tal*_*aul 1

这个答案对我有帮助。这不是最好的,因为有些方法现在已被弃用。目前它对我有用(4.4.2),但我也想找到一个更理想的解决方案。

    @Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);

    if (!hasFocus) {
        windowCloseHandler.postDelayed(windowCloserRunnable, 250);
    }
}

private void toggleRecents() {
    Intent closeRecents = new Intent("com.android.systemui.recent.action.TOGGLE_RECENTS");
    closeRecents.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
    ComponentName recents = new ComponentName("com.android.systemui", "com.android.systemui.recent.RecentsActivity");
    closeRecents.setComponent(recents);
    this.startActivity(closeRecents);
}

private Handler windowCloseHandler = new Handler();
private Runnable windowCloserRunnable = new Runnable() {
    @Override
    public void run() {
        ActivityManager am = (ActivityManager)getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);
        ComponentName cn = am.getRunningTasks(1).get(0).topActivity;

        if (cn != null && cn.getClassName().equals("com.android.systemui.recent.RecentsActivity")) {
            toggleRecents();
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

有了这个许可:

<uses-permission android:name="android.permission.GET_TASKS" />
Run Code Online (Sandbox Code Playgroud)