diff --git a/iterableapi/src/main/java/com/iterable/iterableapi/IterableInAppFragmentHTMLNotification.java b/iterableapi/src/main/java/com/iterable/iterableapi/IterableInAppFragmentHTMLNotification.java index b6b9a99f6..51894424f 100644 --- a/iterableapi/src/main/java/com/iterable/iterableapi/IterableInAppFragmentHTMLNotification.java +++ b/iterableapi/src/main/java/com/iterable/iterableapi/IterableInAppFragmentHTMLNotification.java @@ -4,6 +4,7 @@ import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; +import android.content.res.Resources; import android.graphics.Color; import android.graphics.Point; import android.graphics.Rect; @@ -200,9 +201,12 @@ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup c applyWindowGravity(getDialog().getWindow(), "onCreateView"); } - webView = new IterableWebView(getContext()); + webView = createWebViewSafely(getContext()); + if (webView == null) { + dismissAllowingStateLoss(); + return null; + } webView.setId(R.id.webView); - webView.createWithHtml(this, htmlString); if (orientationListener == null) { @@ -324,7 +328,9 @@ public void onSaveInstanceState(@NonNull Bundle outState) { */ @Override public void onStop() { - orientationListener.disable(); + if (orientationListener != null) { + orientationListener.disable(); + } super.onStop(); } @@ -747,6 +753,18 @@ InAppLayout getInAppLayout(Rect padding) { return InAppLayout.CENTER; } } + + private IterableWebView createWebViewSafely(Context context) { + try { + return new IterableWebView(context); + } catch (Resources.NotFoundException e) { + IterableLogger.e(TAG, "Failed to create WebView - system WebView resource issue", e); + return null; + } catch (RuntimeException e) { + IterableLogger.e(TAG, "Failed to create WebView - unexpected error", e); + return null; + } + } } enum InAppLayout {