Skip to content

Commit 5ff1f0c

Browse files
committed
fix: use windowInsets for input method detection
1 parent 5249d8d commit 5ff1f0c

File tree

1 file changed

+11
-2
lines changed
  • OneSignalSDK/onesignal/core/src/main/java/com/onesignal/common

1 file changed

+11
-2
lines changed

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/common/DeviceUtils.kt

+11-2
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@ import android.app.Activity
44
import android.content.Context
55
import android.graphics.Rect
66
import android.net.ConnectivityManager
7+
import android.os.Build
78
import android.telephony.TelephonyManager
89
import android.util.DisplayMetrics
910
import android.view.View
11+
import android.view.WindowInsets
12+
import androidx.core.view.WindowInsetsCompat
1013
import java.lang.ref.WeakReference
1114

1215
object DeviceUtils {
@@ -28,8 +31,14 @@ object DeviceUtils {
2831
window.windowManager.defaultDisplay.getMetrics(metrics)
2932
}
3033
if (view != null) {
31-
val heightDiff = metrics.heightPixels - visibleBounds.bottom
32-
isOpen = heightDiff > MARGIN_ERROR_PX_SIZE
34+
isOpen = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
35+
val imeInsets = view.rootWindowInsets.getInsets(WindowInsetsCompat.Type.ime())
36+
// ensure input method size is 0
37+
!(imeInsets.left == 0 && imeInsets.top == 0 && imeInsets.right == 0 && imeInsets.bottom == 0)
38+
} else {
39+
val heightDiff = metrics.heightPixels - visibleBounds.bottom
40+
heightDiff > MARGIN_ERROR_PX_SIZE
41+
}
3342
}
3443
return isOpen
3544
}

0 commit comments

Comments
 (0)