Отключить кнопку недавних задач на Android 5.0

Я работаю над приложением, которому необходимо подавить кнопку последних приложений, как это делается в приложении Toddler Lock. Я хочу, чтобы пользователь не мог выйти из моего приложения, нажав кнопку последних приложений.

Блокировка для малышей (https://play.google.com/store/apps/details?id=marcone.toddlerlock&hl=en) всякий раз, когда вы нажимаете кнопку последних приложений, экран немного мигает, но приложение возвращается к своей собственной активности. Даже если мы нажмем кнопку недавних приложений несколько раз подряд и сможем отобразить экран последних приложений через несколько миллисекунд, приложение вернется к своей собственной активности.

Я знаю, что должна быть какая-то служба, которая находится за кулисами, но я не могу точно понять.

Может ли кто-нибудь сказать мне, как приложению Toddler Lock удается подавить кнопку последних приложений. Мне нужно реализовать точно такое же поведение в моем приложении.

Я попробовал ответ, приведенный по ссылке ниже: Изменение результата getRecentTasks

и кнопка последних приложений Android для перехвата, но они не работают на Android Lollipop.

Если есть способ сделать это с помощью домашнего экрана в моем приложении, рассмотрите и его.


person Dpk    schedule 28.05.2015    source источник


Ответы (2)


Наконец, я смог добиться этого, выполнив следующие действия:

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

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

activityManager.moveTaskToFront(getTaskId(), 0);

}

потребуется разрешение...

<uses-permission android:name="android.permission.REORDER_TASKS" />
person Dpk    schedule 05.06.2015
comment
Привет, Dpk, это отлично работает для недавней кнопки. Я хочу, чтобы моя домашняя кнопка была похожа на приложение Toddler Lock. не могли бы вы мне помочь? - person Amir; 20.08.2015
comment
Взгляните на эти stackoverflow.com/questions /12048135/ и stackoverflow.com/questions/6319060/ - person Dpk; 26.08.2015
comment
протестирована работа с андроидом 4.4.4, samsung galaxy mega. Спасибо! - person Amir Fazwan; 04.01.2016
comment
Он не работает на планшете Android 8.1 7 WSVGA (планшет)......., он работает в Samsung Galaxy c7PRO. Любое решение для планшета? - person Ankita Mojidra; 13.05.2020

Вам нужно написать сервис, который будет постоянно отслеживать верхнюю активность. Если основная активность относится к пакету com.android.systemui, это означает, что пользователь нажал кнопку последних приложений. Таким образом, в это время вы поддерживаете максимальную активность в своем приложении и снова запускаете ту же активность.

person Chandrakanth    schedule 28.05.2015
comment
ActivityManager activityManager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); List<ActivityManager.RunningTaskInfo> taskInfo =activityManager.getRunningTasks(1); ActivityManager.RunningTaskInfo runningTaskInfo = taskInfo.get(0); ComponentName topActivity = runningTaskInfo.topActivity; Я предполагаю, что вы говорите об этом коде, а затем проверяете, является ли основная активность com.android.systemui, но я не смог заставить это работать на Lollipop, хотя это работает на Kitkat. На Lollipop он всегда возвращает активность из моего приложения. - person Dpk; 28.05.2015