【问题标题】:Need to detect Home Key to show them a dialog box需要检测 Home Key 以显示对话框
【发布时间】:2019-09-29 04:04:35
【问题描述】:

问题:
我正在编写一个应用程序,我想在其中保护用户免于意外退出。
例如,不小心点击了 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("onKeyDown(): Got a Home Key.");
        }
        System.out.println("onKeyDown(): keyCode = " + keyCode);
        return super.onKeyDown(keyCode, event);
    }

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

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

【问题讨论】:

    标签: android android-homebutton


    【解决方案1】:

    为主页按钮创建一个单独的类和广播接收器。在你的主要活动中使用接口作为监听器,明确的解决方案给出here

    【讨论】:

    • 也试过了。它给了我 onHomePressed() 回调,但它也将我的应用程序置于后台。我将如何处理那部分?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-09
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-18
    • 1970-01-01
    相关资源
    最近更新 更多