如何在安卓设备上检测硬/软返回按钮?

3
我想知道如何在设备上检测“返回按钮”的硬件或软件状态?我进行了搜索,但大多数结果都是以下代码。
   @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        // do something on back.
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

但是我只需要检测设备上是否存在返回按钮,无论是硬件按钮还是软件按钮。


两件事。你没有先搜索(这里有数百个答案),而且你也没有说明你想要做什么。 - Simon
@Simon,你能给我提供链接吗? - user3555472
新款手机有软键盘,而旧手机只有硬按键。 - Lucifer
2
@Simon,这不是一个重复的问题。 - Lucifer
1
@Simon 我想检测返回按钮而不是按下返回按钮。 - user3555472
3个回答

10

我认为这应该可以工作

查询框架是否存在任何物理按键的信息,这些按键连接到设备上的任何键盘上,这些按键能够产生给定的键码。

boolean hasBackKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK);

Android开发文档


很好的答案,但是能否知道返回按钮的位置(在左边还是右边)?我想用箭头来突出它。如果是软件可能是版本检查,但如果是物理的,我真的不知道。 - Giudark
如果设备使用的是启用了软件键的ROM,即使它们有硬件键,该怎么办?例如CM、LOS、OxygenOS等。 - Lamberto Basti

0

最好的方法是重写onBackPress(),因为无论你想在返回键事件上实现什么功能,你都可以在onBackPress()方法中完成。

@Override
public void onBackPressed() {
    // TODO Auto-generated method stub
   // do your stuff  here
    super.onBackPressed();
}

-2
您可以通过重写该方法来实现此功能。
   @Override
    public void onBackPressed() {
        // TODO Auto-generated method stub
        super.onBackPressed();
    }

我想要检测设备上的返回按钮而不是点击返回按钮。 - user3555472

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接