题 Android ICS:如何检测设备是否具有“屏幕后退/主页按钮”(如Galaxy Nexus)


我想知道是否有办法检测设备是否有“屏幕按钮”(如Galaxy Nexus或ICS平板电脑)

我的问题是在具有屏幕按钮的设备上,在操作上,添加溢出按钮(如果溢出),而不是在其他设备上,所以我希望能够预测这种行为。

感谢您的帮助。


11
2018-02-02 00:12


起源


为什么你关心,只要用户有权访问溢出? - CommonsWare
CommonsWare是对的,为什么你觉得有必要预测这种行为? - adamp
蜂窝平板电脑也有“屏幕按钮” - MikeC
“需要有一致性” - 这就是原因 你需要把事情单独留下来。绝大多数用户没有 都 具有硬件MENU按钮的Android设备和没有硬件MENU按钮的Android设备。他们不关心其他类型的设备的行为 - 他们希望他们的应用程序行为 像所有其他应用程序一样。你就像那些认为他们的Android应用必须看的人一样 相同 对于他们的iOS应用程序,没有意识到很少有人将这两者并排比较,并且使用搞砸的Android导航作为结果。 - CommonsWare
具有硬菜单键的设备上不会出现溢出,因为这些设备已经具有显示溢出的已知机制 - 菜单键。您不应该针对不同设备上的应用程序的所有用户实现像素完美一致性,您的目标应该是与其他应用程序保持一致。 相同 设备。 Android设备有许多硬件变化:屏幕尺寸,依赖硬键盘/软键盘等。您不希望平板电脑用户使用手机用户界面,以便与手机用户保持一致,而不是想要溢出按钮+硬菜单键。 - adamp


答案:


在您的Activity中,您可以运行以下命令:

boolean hasNavigationBar = false;

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH)
{
    hasNavigationBar = !ViewConfiguration.get(context).hasPermanentMenuKey();
}    
else 
{
    hasNavigationBar = false;
}

10
2018-02-27 15:54