我目前正在努力解决这个问题。我需要检查安装了应用程序的设备是否有硬件菜单键。因为Galaxy Nexus等设备上不存在它,所以我在这种情况下直接在UI中显示它。
我已经查看了PackageManager.hasSystemFeature(),但没有找到任何有用的东西。
有没有人这样做过?
答案 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)
答案 5 :(得分:-1)
如果您想要资源限定符(可能是因为您要区分UI),请使用keyssoft
资源限定符。