diff --git a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java index d141dc9325b5..fdd02a6f9ab2 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java +++ b/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerImpl.java @@ -21,6 +21,7 @@ import android.hardware.SensorManager; import android.net.Uri; import android.os.AsyncTask; +import android.os.Build; import android.view.WindowManager; import android.widget.Toast; @@ -94,6 +95,12 @@ public class DevSupportManagerImpl implements PackagerCommandListener, DevInternalSettings.Listener { + /* + * Adds support for Android O. See https://developer.android.com/preview/behavior-changes.html#cwt for more info + */ + private static final int O_TYPE_APPLICATION_OVERLAY = 2038; + private static final int WINDOW_TYPE = "O".equals(Build.VERSION.CODENAME) ? O_TYPE_APPLICATION_OVERLAY : WindowManager.LayoutParams.TYPE_SYSTEM_ALERT; + private static final int JAVA_ERROR_COOKIE = -1; private static final int JSEXCEPTION_ERROR_COOKIE = -1; private static final String JS_BUNDLE_FILE_NAME = "ReactNativeDevBundle.js"; @@ -322,7 +329,7 @@ private void showNewError( public void run() { if (mRedBoxDialog == null) { mRedBoxDialog = new RedBoxDialog(mApplicationContext, DevSupportManagerImpl.this, mRedBoxHandler); - mRedBoxDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); + mRedBoxDialog.getWindow().setType(WINDOW_TYPE); } if (mRedBoxDialog.isShowing()) { // Sometimes errors cause multiple errors to be thrown in JS in quick succession. Only @@ -464,7 +471,7 @@ public void onCancel(DialogInterface dialog) { } }) .create(); - mDevOptionsDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); + mDevOptionsDialog.getWindow().setType(WINDOW_TYPE); mDevOptionsDialog.show(); }