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

时间:2012-01-28 11:28:54

标签: android menu key hardware

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

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

有没有人这样做过?

6 个答案:

答案 0 :(得分:92)

ViewConfiguration.get(context).hasPermanentMenuKey()

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

答案 1 :(得分:23)

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

答案 2 :(得分:3)

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

作为一般准则,您应该检查特定功能,而不是查看系统/ API版本号。使用ActionBar类(如果可用),否则回退到2. x 选项菜单。

你看过Google’s action-bar tutorial了吗?这使你更清楚你应该做什么。

答案 3 :(得分:1)

我认为一个可能更好的解决方案是添加一个自己的操作栏。因此,每个设备都可以看到它,您无需检查硬件配置或Api版本。

答案 4 :(得分:1)

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

本文解决了这个问题:

Check for navigation bar

答案 5 :(得分:-1)

如果您想要资源限定符(可能是因为您要区分UI),请使用keyssoft资源限定符。