Android Disable Recent Task Button like in SureLoc

2019-04-09 00:22发布

问题:

Anyone who knows how to disable the Recent Task App Button when it launches the allowed application in the app just like in SureLock Kiosk Lockdown? If so, can you please provide codes for that?

回答1:

From the source

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

        Log.d("Focus debug", "Focus changed !");

    if(!hasFocus) {
        Log.d("Focus debug", "Lost focus !");

        Intent closeDialog = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
        sendBroadcast(closeDialog);
    }
}


回答2:

For disabling Recent button add this code to your Main activity:

@Override 
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    if (!hasFocus) {
        windowCloseHandler.post(windowCloserRunnable);
    }
}
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();
    }
}
};


回答3:

Yes, it's possible easy way.

Add this permission to the manifest.xml file

<uses-permission android:name="android.permission.REORDER_TASKS" />

Put this code in desire Activity on which you want to block/disable the recent apps button:

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

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

        activityManager.moveTaskToFront(getTaskId(), 0);
}

It's working for me.



回答4:

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

    Log.d("Focus debug", "Focus changed !");

    if(!hasFocus) {
        Log.d("Focus debug", "Lost focus !");

        Intent closeDialog = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
        sendBroadcast(closeDialog);
    }
}


回答5:

For disable the recent apps button while launching other applications then you can create a service.

public class StatusBarService extends Service {

private static final String TAG = StatusBarService.class.getSimpleName();

private volatile boolean isRunning;

@Override
public IBinder onBind(Intent intent) {
    return null;
}

@Override
public void onCreate() {
    super.onCreate();

    isRunning = true;

    // Lock a recentApps button
    RecentAppLockerThread thread = new RecentAppLockerThread();
    new Thread(thread).start();

}

/**
 * Lock a recent apps button
 * 
 * 
 */
private class RecentAppLockerThread implements Runnable {

    @Override
    public void run() {
        while (isRunning) {
            Intent closeDialog = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
            sendBroadcast(closeDialog);          
        }
    }

}

@Override
public boolean stopService(Intent name) {
    isRunning = false;
    return super.stopService(name);
}

@Override
public void onDestroy() {
    super.onDestroy();
    isRunning = false;
}

}