From 030010ce9b55af17ec189b45771d0feeaa060b86 Mon Sep 17 00:00:00 2001 From: Kudo Chien Date: Wed, 1 Feb 2023 00:16:05 +0800 Subject: [PATCH] [android] fix ReactRootView cast error happening on stripe sdk --- .../main/java/com/facebook/react/ReactRootView.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java b/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java index e0c37c31a24e8f..887b1debc53e97 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java +++ b/ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java @@ -14,6 +14,7 @@ import android.app.Activity; import android.content.Context; +import android.content.ContextWrapper; import android.graphics.Canvas; import android.graphics.Point; import android.graphics.Rect; @@ -919,6 +920,14 @@ public void onGlobalLayout() { checkForDeviceDimensionsChanges(); } + private Activity getActivity() { + Context context = getContext(); + while (!(context instanceof Activity) && context instanceof ContextWrapper) { + context = ((ContextWrapper) context).getBaseContext(); + } + return (Activity) context; + } + @RequiresApi(api = Build.VERSION_CODES.M) private void checkForKeyboardEvents() { getRootView().getWindowVisibleDisplayFrame(mVisibleViewArea); @@ -934,7 +943,7 @@ private void checkForKeyboardEvents() { Insets barInsets = compatRootInsets.getInsets(WindowInsetsCompat.Type.systemBars()); int height = imeInsets.bottom - barInsets.bottom; - int softInputMode = ((Activity) getContext()).getWindow().getAttributes().softInputMode; + int softInputMode = getActivity().getWindow().getAttributes().softInputMode; int screenY = softInputMode == WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING ? mVisibleViewArea.bottom - height