Android — Двойное нажатие кнопки «Домой» в качестве действия по умолчанию

#android #navigationbar #android-homebutton #home-button #android-navigation-bar

#Android #панель навигации #android-домашняя кнопка #кнопка «Домой» #android-navigation-bar

Вопрос:

В настоящее время я внедряю приложение для Android. Когда я нажимаю кнопки «Домой» / «Обзор», приложение по умолчанию приостанавливается (показывая обзор приложений для второго). Я заметил, что большинство приложений в последних версиях Android предоставляют возможность двойного нажатия на кнопки «Домой» и «Обзор». В частности, при нажатии кнопок «Домой» / «Обзор» появляется всплывающее сообщение «Нажмите еще раз, чтобы выйти». Это действие по умолчанию для кнопок «Домой» / «Обзор». Если да, то как я могу включить его в своем приложении? Если нет, могу ли я переопределить поведение по умолчанию? В различных сообщениях упоминается, что нет возможности заменить действия кнопки «Домой» / «Обзор», поскольку они являются системными по умолчанию (вот почему нет таких методов обработки, как onBackPressed для кнопки «Назад»).

Комментарии:

1. Нет, я имею в виду кнопки «Домой» и «Обзор».»(вот почему нет таких методов обработки, как onBackPressed для кнопки «Назад»)». Большинство полноэкранных приложений, которые я установил на свой телефон, имеют возможность отображать всплывающее сообщение при нажатии кнопок «Домой» или «Обзор».

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

3. Они могут показывать всплывающее окно внутри при паузе или при возобновлении. Что касается языка, то это строка.

4. @PrinceAli вы говорите: «что касается языка, это строка». Вы имеете в виду системную строку по умолчанию, расположенную где-нибудь, или строку, определенную в коде или как значение в strings.xml . Я почти уверен, что это не второе, поскольку я тестировал различные приложения, реализованные на разных языках, и они отображают всплывающее сообщение о выходе на системном языке. Например, я переключил язык телефона на французский, и сообщение о выходе из тоста отображается на французском языке для приложений, реализованных на английском, а также на других языках (но не на французском).

5. Как вы можете сказать, что французский перевод не реализован в strings.xml ?

Ответ №1:

В вашем MainActivity внутри методов onPause / onResume.

 @Override
    protected void onPause() {
        showToast("You paused the activity");
        super.onPause();
    }
    
    @Override
    protected void onResume() {
        showToast("You resumed the activity");
        super.onResume();
    }
    
    
    private void showToast(String str) {
        Toast.makeText(getApplicationContext(), str, Toast.LENGTH_SHORT).show();
    }
 

Предыдущие методы будут отображать всплывающее сообщение о том, что вы приостановили действие при нажатии кнопок «Назад», «Домой» или «Обзор» (onPause).
Аналогично, если вы повторно войдете в приложение, оно отобразит, что вы возобновили действие.

Комментарии:

1. Точно так же, как вы говорите, это отобразит всплывающее окно после приостановки приложения, а не после нажатия кнопок «Домой» или «Обзор». Я хочу функциональность, которая показывает всплывающее окно после нажатия кнопок. В случае, если приложение приостановлено по другой причине (т. Е. Вы покинули приложение из-за вызова), я не хочу, чтобы отображалось всплывающее сообщение. Я определенно уверен, что это возможно, поскольку многие приложения, установленные на моем телефоне, поддерживают эту функциональность.

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