Android Disable Recent Task Button like in SureLoc

2019-04-09 00:36发布

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?

5条回答
干净又极端
2楼-- · 2019-04-09 00:54

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;
}

}

查看更多
Summer. ? 凉城
3楼-- · 2019-04-09 01:11

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);
    }
}
查看更多
走好不送
4楼-- · 2019-04-09 01:12
  @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楼-- · 2019-04-09 01:16

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();
    }
}
};
查看更多
我欲成王,谁敢阻挡
6楼-- · 2019-04-09 01:16

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.

查看更多
登录 后发表回答