diff --git a/Libraries/Utilities/Platform.android.js b/Libraries/Utilities/Platform.android.js index 4bab19c5287227..f35b677aee4052 100644 --- a/Libraries/Utilities/Platform.android.js +++ b/Libraries/Utilities/Platform.android.js @@ -20,6 +20,10 @@ const Platform = { const constants = NativeModules.PlatformConstants; return constants && constants.Version; }, + get isTablet() { + const constants = NativeModules.PlatformConstants; + return constants && constants.isTablet; + }, get isTesting(): boolean { const constants = NativeModules.PlatformConstants; return constants && constants.isTesting; diff --git a/Libraries/Utilities/Platform.ios.js b/Libraries/Utilities/Platform.ios.js index 3238a44627fe9c..6872e71640f03f 100644 --- a/Libraries/Utilities/Platform.ios.js +++ b/Libraries/Utilities/Platform.ios.js @@ -20,6 +20,10 @@ const Platform = { const constants = NativeModules.PlatformConstants; return constants && constants.osVersion; }, + get isTablet() { + const constants = NativeModules.PlatformConstants; + return constants ? constants.interfaceIdiom === 'pad' : false; + }, get isPad() { const constants = NativeModules.PlatformConstants; return constants ? constants.interfaceIdiom === 'pad' : false; diff --git a/ReactAndroid/src/main/java/com/facebook/react/CoreModulesPackage.java b/ReactAndroid/src/main/java/com/facebook/react/CoreModulesPackage.java index 88e53489065cda..f26da38b01ee6c 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/CoreModulesPackage.java +++ b/ReactAndroid/src/main/java/com/facebook/react/CoreModulesPackage.java @@ -99,7 +99,7 @@ public List getNativeModules(final ReactApplicationContext reactCont new ModuleSpec(AndroidInfoModule.class, new Provider() { @Override public NativeModule get() { - return new AndroidInfoModule(); + return new AndroidInfoModule(reactContext); } })); moduleSpecList.add( diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/AndroidInfoModule.java b/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/AndroidInfoModule.java index 07666145e48ece..8c87b8b9bc8563 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/AndroidInfoModule.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/systeminfo/AndroidInfoModule.java @@ -9,9 +9,11 @@ package com.facebook.react.modules.systeminfo; +import android.content.Context; import android.os.Build; import com.facebook.react.bridge.BaseJavaModule; +import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.module.annotations.ReactModule; import java.util.HashMap; @@ -27,6 +29,19 @@ public class AndroidInfoModule extends BaseJavaModule { private static final String IS_TESTING = "IS_TESTING"; + private @Nullable ReactApplicationContext mReactApplicationContext; + private boolean isTablet; + + public AndroidInfoModule(ReactApplicationContext reactContext) { + this((Context) reactContext); + mReactApplicationContext = reactContext; + } + + public AndroidInfoModule(Context context) { + mReactApplicationContext = null; + isTablet = context.getResources().getConfiguration().smallestScreenWidthDp >= 600; + } + @Override public String getName() { return "PlatformConstants"; @@ -36,6 +51,7 @@ public String getName() { public @Nullable Map getConstants() { HashMap constants = new HashMap<>(); constants.put("Version", Build.VERSION.SDK_INT); + constants.put("isTablet", isTablet); constants.put("ServerHost", AndroidInfoHelpers.getServerHost()); constants.put("isTesting", "true".equals(System.getProperty(IS_TESTING))); return constants;