我需要检查一个设备是否有软导航栏,我按照建议here.
它工作得很好,除了onePlus设备,出于某种原因,这段代码:
int id = resources.getIdentifier("config_showNavigationBar","bool",android");
return id > 0 && resources.getBoolean(id);
虽然显示了软导航栏,但返回false.
知道如何才能得到正确的结果?
我更喜欢不计算实际宽度和可用宽度,这似乎是昂贵的操作.
谢谢.
最佳答案
见this答案.但是,没有办法100%肯定.
boolean hasBackKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK);
boolean hasHomeKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_HOME);
if (hasBackKey && hasHomeKey) {
// no navigation bar,unless it is enabled in the settings
} else {
// 99% sure there's a navigation bar
}
编辑
另一种方法
public boolean hasNavBar (Resources resources) {
int id = resources.getIdentifier("config_showNavigationBar","android");
return id > 0 && resources.getBoolean(id);
}