Android:以编程方式检测设备是否具有硬件菜单按钮

NiT*_*hDi 42 hardware android menu key

我目前正在努力解决这个问题.我需要检查安装了应用程序的设备是否有硬件菜单键.因为它不存在于像Galaxy Nexus这样的设备上,所以我在这种情况下直接在UI中显示它.

我已经查看了PackageManager.hasSystemFeature(),但没有找到任何有用的东西.

有没有人这样做过?

fhu*_*cho 92

ViewConfiguration.get(context).hasPermanentMenuKey()
Run Code Online (Sandbox Code Playgroud)

有关ViewConfiguration#hasPermanentMenuKey()更多信息,请参阅 请注意,这仅适用于API级别14+(Android 4.0 Ice Cream Sandwich或更新版本).

  • 仅适用于API级别> = 14 http://developer.android.com/reference/android/view/ViewConfiguration.html#hasPermanentMenuKey() (11认同)
  • 您需要将构建目标设置为API级别14,这应该阻止Eclipse抱怨.在您的代码中,检查API级别是什么.如果它是10或更小,设备确实有硬件菜单按钮.如果它是11 - 13(Honeycomb),则设备没有HW MENU按钮,因为带Honeycomb的平板电脑没有MENU.如果API级别为14或更高,则可以使用hasPermanentMenuKey(). (4认同)
  • 作为参考,我有一个带有硬件菜单键的API 14设备(4.0.3)和`hasPermanentMenuKey()`报告错误.在这里插入皱眉的脸. (4认同)

The*_*Man 23

if(Build.VERSION.SDK_INT <= 10 || (Build.VERSION.SDK_INT >= 14 &&    
                              ViewConfiguration.get(this).hasPermanentMenuKey()))
{
   // menu key is present
}
else
{
  //No menu key
}
Run Code Online (Sandbox Code Playgroud)

  • 据我所知,它不会调用hasPermanentMenuKey(),因为check> = 14将失败并且不会调用.这就是每次我使用API​​特定方法时,我总是创建一个方法xxV14()来处理它,这样我就可以正确地忽略警告,而不必担心其他调用没有被处理掉. (7认同)