Необходимо определить Home Key, чтобы показать им диалоговое окно - PullRequest
0 голосов
/ 29 сентября 2019

Проблема:
Я пишу приложение, в котором я хочу спасти пользователя от случайных выходов.
Например, случайно щелкнув по клавише home и выйдя из приложения.
Поэтому, когда пользователь нажимает клавишу Home,Я хочу показать им диалоговое окно, спрашивающее, действительно ли они хотят выйти из приложения?
Если пользователь выбирает да, тогда выход.
В противном случае просто оставайтесь в приложении.

Я пробовал и видел почти все примеры переполнения стека, но пока что мне это не помогло.
Любые предложения приветствуются.

мин Версия SDK для приложения = 12
целевая Версия Sdk для приложения = 28

Неработающий код:

package com.tivo.homebutton;

import androidx.appcompat.app.AppCompatActivity;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.util.Log;
import android.os.Build;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.WindowManager;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        getWindow().setType((WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG));
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (event.getKeyCode() == KeyEvent.KEYCODE_HOME) {
            System.out.println("Anil: onKeyDown(): Got a Home Key.");
        }
        System.out.println("Anil: onKeyDown(): keyCode = " + keyCode);
        return super.onKeyDown(keyCode, event);
    }

    @Override
    public boolean dispatchKeyEvent(KeyEvent event) {
        if (event.getKeyCode() == KeyEvent.KEYCODE_HOME) {
            System.out.println("Anil: dispatchKeyEvent(): Got a Home Key.");
        }
        System.out.println("Anil: dispatchKeyEvent(): keyCode = " + event.getKeyCode());
        return super.dispatchKeyEvent(event);
    }
}

Это просто не работает даже после изменениятип окна!
Ребята, у вас есть идеи, как мне это сделать?

1 Ответ

0 голосов
/ 29 сентября 2019

Создайте отдельный класс и широковещательный приемник для кнопки домой.Используйте интерфейс в своей основной деятельности для слушателя, ясное решение дано здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...