我正在编写一个带透明导航栏的
Android应用程序.要相应地调整布局,我需要知道设备是否有软件或硬件按钮.
在我的研究期间,我遇到了以下解决方案:
boolean hasMenuKey = ViewConfiguration.get(context).hasPermanentMenuKey();
这种方法不适用于三星Note 4或HTC One等新设备,它们没有菜单键,但仍有硬件按钮.
boolean hasBackKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK); boolean hasHomeKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_HOME); boolean hasHardwareButtons = hasBackKey && hasHomeKey;
这不起作用,因为一些设备,如索尼Xperia Z3 Compact,虽然它有一个软件导航栏,但它返回true.
有没有可靠的方法来确定是否有物理按钮或软件导航栏?