按下主页按钮时的呼叫方法

我的一项Android活动中有这种方法:


@Override

public boolean onKeyDown(int keyCode, KeyEvent event)

{

    if(keyCode == KeyEvent.KEYCODE_BACK)

    {

        Log.d("Test", "Back button pressed!");

    }

    else if(keyCode == KeyEvent.KEYCODE_HOME)

    {

        Log.d("Test", "Home button pressed!");

    }

    return super.onKeyDown(keyCode, event);

}

但是,即使KEYCODE_HOME有效,log方法也不会触发。但是,这适用于后退按钮。有谁知道这是为什么以及如何使它起作用?


MMMHUHU
浏览 419回答 3
3回答

桃花长相依

“主页”按钮是一个非常危险的按钮,因此,Android不允许您以与“返回”按钮相同的方式覆盖其行为。您会注意到home按钮似乎是作为意图调用实现的,因此最终将不得不向活动添加意图类别。然后,无论何时用户回家,您的应用都会显示为一个选项。您应该考虑使用“主页”按钮要完成的操作。如果它不能代替设备的默认主屏幕,我会避免使“ HOME”按钮超载,但是有可能(根据上述主题中的讨论)。

牛魔王的故事

我花了将近一个月的时间来解决这个问题。刚才我解决了这个问题。在活动的onPause()中,必须包含以下条件:    if (this.isFinishing()){        //Insert your finishing code here    }函数isFinishing()返回一个布尔值。如果您的应用程序实际上正在关闭,则为True;如果您的应用程序仍在运行,但例如屏幕关闭,则为False。希望能帮助到你!

森林海

应用程序无法拦截HOME按钮。这是Android中的一种设计行为。原因是防止恶意应用获得对您手机的控制权(如果用户无法按回去或回家,则他可能永远无法退出该应用)。“主页”按钮被视为用户的“安全区域”,并且将始终启动用户配置的主页应用程序。唯一的例外是任何配置为家庭替代的应用程序。这意味着它在AndroidManifest.xml中为相关活动声明了以下内容:<intent-filter>&nbsp; &nbsp;<action android:name="android.intent.action.MAIN" />&nbsp; &nbsp;<category android:name="android.intent.category.HOME" />&nbsp; &nbsp;<category android:name="android.intent.category.DEFAULT" /></intent-filter>当按下主页按钮时,onNewIntent将调用当前家庭应用程序的活动。
打开App,查看更多内容
随时随地看视频慕课网APP