我目前正在努力解决这个问题.我需要检查安装了应用程序的设备是否有硬件菜单键.因为它不存在于像Galaxy Nexus这样的设备上,所以我在这种情况下直接在UI中显示它.
我已经查看了PackageManager.hasSystemFeature(),但没有找到任何有用的东西.
有没有人这样做过?
有没有办法检测我当前正在运行的设备是否安装了硬件键盘?
我如何查询设备功能?
我正在编写一个带透明导航栏的Android应用程序.要相应地调整布局,我需要知道设备是否有软件或硬件按钮.
在我的研究期间,我遇到了以下解决方案:
boolean hasMenuKey = ViewConfiguration.get(context).hasPermanentMenuKey();
Run Code Online (Sandbox Code Playgroud)
这种方法不适用于三星Note 4或HTC One等新设备,它们没有菜单键,但仍有硬件按钮.
boolean hasBackKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK);
boolean hasHomeKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_HOME);
boolean hasHardwareButtons = hasBackKey && hasHomeKey;
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为一些设备,如索尼Xperia Z3 Compact,虽然它有一个软件导航栏,但它返回true.
有没有可靠的方法来确定是否有物理按钮或软件导航栏?