From 334648ac2aca2977cf1b1923f3ed8d8eff556893 Mon Sep 17 00:00:00 2001 From: wanderbon Date: Thu, 20 Jun 2019 10:45:36 +0300 Subject: [PATCH] Update ExtraDimensionsModule.java --- .../ExtraDimensionsModule.java | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/android/src/main/java/ca/jaysoo/extradimensions/ExtraDimensionsModule.java b/android/src/main/java/ca/jaysoo/extradimensions/ExtraDimensionsModule.java index 330a3d2..d71b342 100644 --- a/android/src/main/java/ca/jaysoo/extradimensions/ExtraDimensionsModule.java +++ b/android/src/main/java/ca/jaysoo/extradimensions/ExtraDimensionsModule.java @@ -86,8 +86,15 @@ public Map getConstants() { private boolean hasPermanentMenuKey() { final Context ctx = getReactApplicationContext(); - int id = ctx.getResources().getIdentifier("config_showNavigationBar", "bool", "android"); - return !(id > 0 && ctx.getResources().getBoolean(id)); + + if(isEmulator()) { + boolean hasPermanentMenuKey = ViewConfiguration.get(ctx).hasPermanentMenuKey(); + return hasPermanentMenuKey; + } else { + int id = ctx.getResources().getIdentifier("config_showNavigationBar", "bool", "android"); + + return !(id > 0 && ctx.getResources().getBoolean(id)); + } } private float getStatusBarHeight(DisplayMetrics metrics) { @@ -160,4 +167,15 @@ protected static float getNormalNavigationBarHeight(final Context ctx) { } return 0; } -} \ No newline at end of file + + public static boolean isEmulator() { + return Build.FINGERPRINT.startsWith("generic") + || Build.FINGERPRINT.startsWith("unknown") + || Build.MODEL.contains("google_sdk") + || Build.MODEL.contains("Emulator") + || Build.MODEL.contains("Android SDK built for x86") + || Build.MANUFACTURER.contains("Genymotion") + || (Build.BRAND.startsWith("generic") && Build.DEVICE.startsWith("generic")) + || "google_sdk".equals(Build.PRODUCT); + } +}