在开发中,我们很多时候需要判断手机是否存在虚拟按键来进行适配,今天楼主分享个有效判断的方法。
//获取是否存在NavigationBar
public boolean checkDeviceHasNavigationBar(Context context) {
boolean hasNavigationBar = false;
Resources rs = context.getResources();
int id = rs.getIdentifier("config_showNavigationBar", "bool", "android");
if (id > 0) {
hasNavigationBar = rs.getBoolean(id);
}
try {
Class systemPropertiesClass = Class.forName("android.os.SystemProperties");
Method m = systemPropertiesClass.getMethod("get", String.class);
String navBarOverride = (String) m.invoke(systemPropertiesClass, "qemu.hw.mainkeys");
if ("1".equals(navBarOverride)) {
//不存在虚拟按键
hasNavigationBar = false;
} else if ("0".equals(navBarOverride)) {
//存在虚拟按键
hasNavigationBar = true;
}
} catch (Exception e) {
}
return hasNavigationBar;
}