Skip to content

Commit 1e74c43

Browse files
authored
Fix crashes caused by toasts on API < 30 (#1624)
don't use AccessibilityNodeInfo's constructor on API levels below 30
1 parent 4363b03 commit 1e74c43

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

maestro-android/src/androidTest/java/dev/mobile/maestro/ToastAccessibilityListener.kt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package dev.mobile.maestro
22

33
import android.app.UiAutomation
4-
import android.graphics.Rect
4+
import android.os.Build
55
import android.util.Log
66
import android.view.accessibility.AccessibilityEvent
77
import android.view.accessibility.AccessibilityNodeInfo
@@ -22,7 +22,13 @@ object ToastAccessibilityListener : UiAutomation.OnAccessibilityEventListener {
2222
accessibilityEvent.className.toString().contains(Toast::class.jvmName)
2323
) {
2424
recentToastTimeMillis = System.currentTimeMillis()
25-
toastNode = AccessibilityNodeInfo().apply {
25+
// Constructor for AccessibilityNodeInfo is only available on Android API 30+
26+
val nodeInfo = if (Build.VERSION.SDK_INT < 30) {
27+
AccessibilityNodeInfo.obtain()
28+
} else {
29+
AccessibilityNodeInfo()
30+
}
31+
toastNode = nodeInfo.apply {
2632
text = accessibilityEvent.text.first().toString()
2733
className = Toast::class.jvmName
2834
isVisibleToUser = true
Binary file not shown.

0 commit comments

Comments
 (0)