Skip to content

Commit b9b9819

Browse files
authored
fix(android): invalid a11y listeners that crashed apps on exit (#11000)
1 parent 584755d commit b9b9819

File tree

1 file changed

+16
-14
lines changed

1 file changed

+16
-14
lines changed

packages/core/application/application.android.ts

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1268,7 +1268,8 @@ export function isAccessibilityServiceEnabled(): boolean {
12681268
}
12691269

12701270
const accessibilityManager = getAndroidAccessibilityManager();
1271-
accessibilityStateChangeListener = new androidx.core.view.accessibility.AccessibilityManagerCompat.AccessibilityStateChangeListener({
1271+
1272+
accessibilityStateChangeListener = new android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener({
12721273
onAccessibilityStateChanged(enabled) {
12731274
updateAccessibilityServiceState();
12741275

@@ -1277,19 +1278,20 @@ export function isAccessibilityServiceEnabled(): boolean {
12771278
}
12781279
},
12791280
});
1281+
accessibilityManager.addAccessibilityStateChangeListener(accessibilityStateChangeListener);
12801282

1281-
touchExplorationStateChangeListener = new androidx.core.view.accessibility.AccessibilityManagerCompat.TouchExplorationStateChangeListener({
1282-
onTouchExplorationStateChanged(enabled) {
1283-
updateAccessibilityServiceState();
1284-
1285-
if (Trace.isEnabled()) {
1286-
Trace.write(`TouchExplorationStateChangeListener state changed to: ${!!enabled}`, Trace.categories.Accessibility);
1287-
}
1288-
},
1289-
});
1283+
if (SDK_VERSION >= 19) {
1284+
touchExplorationStateChangeListener = new android.view.accessibility.AccessibilityManager.TouchExplorationStateChangeListener({
1285+
onTouchExplorationStateChanged(enabled) {
1286+
updateAccessibilityServiceState();
12901287

1291-
androidx.core.view.accessibility.AccessibilityManagerCompat.addAccessibilityStateChangeListener(accessibilityManager, accessibilityStateChangeListener);
1292-
androidx.core.view.accessibility.AccessibilityManagerCompat.addTouchExplorationStateChangeListener(accessibilityManager, touchExplorationStateChangeListener);
1288+
if (Trace.isEnabled()) {
1289+
Trace.write(`TouchExplorationStateChangeListener state changed to: ${!!enabled}`, Trace.categories.Accessibility);
1290+
}
1291+
},
1292+
});
1293+
accessibilityManager.addTouchExplorationStateChangeListener(touchExplorationStateChangeListener);
1294+
}
12931295

12941296
updateAccessibilityServiceState();
12951297

@@ -1302,11 +1304,11 @@ export function isAccessibilityServiceEnabled(): boolean {
13021304
const accessibilityManager = getAndroidAccessibilityManager();
13031305
if (accessibilityManager) {
13041306
if (accessibilityStateChangeListener) {
1305-
androidx.core.view.accessibility.AccessibilityManagerCompat.removeAccessibilityStateChangeListener(accessibilityManager, accessibilityStateChangeListener);
1307+
accessibilityManager.removeAccessibilityStateChangeListener(accessibilityStateChangeListener);
13061308
}
13071309

13081310
if (touchExplorationStateChangeListener) {
1309-
androidx.core.view.accessibility.AccessibilityManagerCompat.removeTouchExplorationStateChangeListener(accessibilityManager, touchExplorationStateChangeListener);
1311+
accessibilityManager.removeTouchExplorationStateChangeListener(touchExplorationStateChangeListener);
13101312
}
13111313
}
13121314

0 commit comments

Comments
 (0)