需要检测Home键才能显示一个对话框

问题描述 投票:0回答:1

问题:我正在编写一个应用程序,希望从意外退出中保存用户。例如,不小心单击主键并退出应用程序。因此,当用户按下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);
    }
}

即使更改了窗口类型,它也无法正常工作!你们对我该怎么做有任何想法吗?

android android-homebutton
1个回答
0
投票

为主页按钮创建单独的类和广播接收器。在您的侦听器的主要活动中使用接口,给定清晰的解决方案here

© www.soinside.com 2019 - 2024. All rights reserved.