我需要知道我的应用运行的设备是否有导航栏。
hasPermanentMenuKey不是解决方案,因为有一些设备(例如三星S5)没有导航栏,但也没有菜单键。
有什么方法可以获得此信息吗?甚至可能在build.prop中获取qemu.hw.mainkeys值的方法也是一种解决方案......
谢谢!
答案 0 :(得分:1)
试试这个
public static boolean hasNavBar(Context context)
{
Resources res = context.getResources();
int resourceId = res.getIdentifier(SHOW_NAV_BAR_RES_NAME, "bool", "android");
if (resourceId != 0)
{
String sNavBarOverride = "";
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)
{
try
{
Class c = Class.forName("android.os.SystemProperties");
Method m = c.getDeclaredMethod("get", String.class);
m.setAccessible(true);
sNavBarOverride = (String) m.invoke(null, "qemu.hw.mainkeys");
}
catch (Throwable e)
{
sNavBarOverride = "";
}
}
boolean hasNav = res.getBoolean(resourceId);
// check override flag (see static block)
if ("1".equals(sNavBarOverride))
hasNav = false;
else if ("0".equals(sNavBarOverride))
hasNav = true;
return hasNav;
}
else
{ // fallback
return !ViewConfiguration.get(context).hasPermanentMenuKey();
}
}