This question already has answers here:
Override home and back button is case a boolean is true
                                
                                    (6个答案)
                                
                        
                                5年前关闭。
            
                    
我在活动中重写了onKeyDown方法。但是只有在按下后退按钮时才调用它。按下主页按钮时不会调用它。我正在Nexus 5上进行测试。这是什么原因?

最佳答案

恐怕从传统意义上讲这是无法做到的。想象一下,如果开发人员可以覆盖“主页”按钮,则最终用户可能/将会遇到的问题?人们可以使用它阻止用户退出其应用程序。这是一个很大的不,不!

但是...如果您没有什么险恶的事情,那么有几种方法可以拦截假设已按下主屏幕按钮的情况。例如:

当按下主页按钮时,操作系统将触发onStop。因此,考虑到这一点,您可以重写该方法,如下所示:

@Override
protected void onStop()
{
    super.onStop();
    // Add your HOME button press logic here
}


使用“假定”“主页”按钮时,请记住以下几点:


弹出另一个Activity时,您会收到此触发器。
操作系统还会在其他各个点触发此方法。


我想这将取决于您弄清楚为什么您需要拦截主页按钮的按下,以及是否有其他方法可以使用。

长话短说:

不,您不能正式拦截“主页”按钮。

您可以假设,但面对随机触发器,也调用onStop()

寻找另一个选项,并完全忽略主页按钮。没有人需要拦截它。

希望这可以帮助!

关于android - onKeyDown不被称为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25449658/

10-12 04:10