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

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

我已经看了PackageManager.hasSystemFeature(),但没有发现有用的东西。

有没有人已经这样做?

ViewConfiguration.get(context).hasPermanentMenuKey() 

有关更多信息,请参阅ViewConfiguration#hasPermanentMenuKey() 。 请注意,这只适用于API级别14+(Android 4.0冰淇淋三明治或更新)。

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

即使在运行Honeycomb的设备上,系统也会为为Android 2.x版本编写的应用程序提供一个“菜单button”。 只有它被称为“溢出菜单”。 所以没有必要检查是否会有这样一个button,如果需要的话,它会在那里。

作为一般指导原则,您应该检查特定的function,而不是查看系统/ API版本号。 如果可用,请使用ActionBar类,否则回退到2.x选项菜单。

你看过Google的行动栏教程吗? 这使得你应该做的更清楚。

我认为一个可能的更好的解决scheme是添加一个自己的操作栏。 所以每个设备都可以看到它,而且您不必检查硬件configuration或Api版本。

keysoft修饰符用于检测硬件键盘而不是导航栏。

本文解决它:

检查导航栏

如果你想要一个资源限定符,这可能是因为你想区分UI,可以使用keyssoft资源限定符。