Отключение кнопки домой Android

Я много читал о том, что мы не можем переопределить или отключить кнопку «Домой». И я тоже согласен с тем, что это рискованно во многих отношениях, поскольку некоторые люди могут неправильно воспользоваться этим. Но, к сожалению, это требование в моем приложении.

Я смог скрыть их на своем устройстве, работающем на Android Kitkat, с помощью функции Immersive. Это правда, что когда пользователь проводит пальцем от края экрана, он делает видимыми панель состояния и навигации. Но я нашел способ снова исчезнуть, вызывая Immersive каждую секунду или около того, используя CountDownTimer. Результат меня удовлетворил, работа выполнена.

Но у меня нет решения для устройств Android, которые не работают на Kitkat, поскольку полосы появляются каждый раз, когда мы взаимодействуем с экраном. Несмотря на то, что полосы скрываются, но появляются каждый раз, когда пользователь касается экрана, это выглядит не очень хорошо. Так что о функции Immersive не может быть и речи, поскольку она не работает, кроме Kitkat.

Я попробовал другое решение, предложенное в различных сообщениях SO -

Делаю мою активность видимой, когда экран заблокирован. Это помогло мне избавиться от третьей кнопки (кнопка справа от кнопки «Домой», не знаю, как она называется). И мы могли бы легко справиться с кнопкой «Назад». Но все еще остается кнопка домой. Мне нужно как-то отключить эту кнопку «Домой» или ничего не делать. Или, по крайней мере (в худшем случае), перейдите к моему приложению, когда я нажимаю кнопку «Домой» (возможно ли это?)

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

У меня тут крайний срок. Любая помощь в этом будет очень полезна для меня. Я также открыт для других способов достижения вышеупомянутой бессмысленной функции.

Спасибо :)


person ik024    schedule 08.07.2014    source источник


Ответы (4)


В Android 5.0 представлен новый API закрепления экрана, который позволяет временно запретить пользователям покидать вашу задачу или отвлекаться на уведомления. Как только ваше приложение активирует фиксацию экрана, пользователи не могут видеть уведомления, получать доступ к другим приложениям или возвращаться на главный экран, пока ваше приложение не выйдет из этого режима.

https://developer.android.com/about/versions/android-5.0.html

person Zsolt Safrany    schedule 19.10.2014

Я интересовался этой темой, и тема, обсуждающая то же самое, была выпущена несколько недель назад. вывод заключается в том, что в старых версиях существуют внешние библиотеки и/или простой код для реализации и переопределения кнопки «Домой».

На +4.0 я так не думаю. проверьте эти темы: Отключить кнопку "Домой" в Android 4.0+ и https://stackoverflow.com/a/10025904/3640637

Надеюсь, поможет.

person PedroHawk    schedule 08.07.2014
comment
Спасибо, я пытаюсь сделать свое приложение главным экраном. но можно ли отключить мое приложение в качестве домашнего экрана из кода. Так как в конечном итоге мне придется перейти на домашний экран Android по умолчанию. - person ik024; 08.07.2014

<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.HOME" />

Добавьте это в свою активность в манифесте.

person EatHeat    schedule 08.07.2014
comment
Что бы это сделало? Я думаю, что видел это во многих других сообщениях, где люди говорят, что это не работает. Кстати, что он делает? - person ik024; 08.07.2014
comment
Это возвращает вас к действию, которое имеет намерение нажать кнопку «Домой». Это то, что используют пользовательские лаунчеры. - person EatHeat; 08.07.2014
comment
хорошо пока все хорошо. но можно ли отключить мое приложение в качестве домашнего экрана из кода. Так как в конечном итоге мне придется перейти на домашний экран Android по умолчанию. - person ik024; 08.07.2014
comment
Позвольте пользователю выбрать лаунчер, кроме вашего. Определите, находится ли пользователь в вашем приложении или нет. Если да, то ничего не делать. Если нет, то перенаправьте его на лаунчер, который он выбрал ранее. - person EatHeat; 08.07.2014

Я думаю, было бы лучше, если бы вы изменили свой подход. Если вы хотите сделать что-то, что никогда не будет закрыто кнопкой «Домой», просто создайте сервис и добавьте вид в диспетчер окон. С параметрами макета вы сможете рисовать поверх всего, что даже кнопка «Домой» не закроет. Примером из жизни может стать новый чат в мессенджерах Facebook. Можно сделать 2 услуги. Один для покрытия слоя строки состояния, а другой для покрытия другой части экрана. Пожалуйста, взгляните на эти образцы

Я попытался заблокировать кнопку «Домой» с помощью приведенного ниже примера, но это блокирует только ЖЕСТКУЮ кнопку «Домой» — https://github.com/shaobin0604/Android-HomeKey-Locker

Ваше объяснение помогает только для более новых версий. Так что просто комбинируйте или берите первый, чтобы достичь этого. Удачи :)

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

person X-HuMan    schedule 30.11.2014