Skip to content

Commit 37fedf8

Browse files
committed
Disable accessibility if all accessibility serivces are disbaled.
Accessibility was kept enabled even if all accessibility services are disabled (explicitly by the user or removed) which was causing the system to fire accessibility events that will never be consumed. Change-Id: Ifb03e786ac0106687252bd1979725ffd724ad1c5
1 parent cb18db8 commit 37fedf8

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

services/java/com/android/server/accessibility/AccessibilityManagerService.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ public boolean onHandleForceStop(Intent intent, String[] packages,
225225
return false;
226226
}
227227
}
228-
228+
229229
@Override
230230
public void onReceive(Context context, Intent intent) {
231231
if (intent.getAction() == Intent.ACTION_BOOT_COMPLETED) {
@@ -697,6 +697,7 @@ private boolean canDispathEventLocked(Service service, AccessibilityEvent event,
697697
private void manageServicesLocked() {
698698
populateEnabledServicesLocked(mEnabledServices);
699699
updateServicesStateLocked(mInstalledServices, mEnabledServices);
700+
disableAccessibilityIfNoEnabledServices(mEnabledServices);
700701
}
701702

702703
/**
@@ -780,6 +781,19 @@ private void updateServicesStateLocked(List<AccessibilityServiceInfo> installedS
780781
}
781782
}
782783

784+
/**
785+
* Disables accessibility if there are no enabled accessibility services which
786+
* to consume the generated accessibility events.
787+
*
788+
* @param enabledServices The set of enabled services.
789+
*/
790+
private void disableAccessibilityIfNoEnabledServices(Set<ComponentName> enabledServices) {
791+
if (enabledServices.isEmpty()) {
792+
Settings.Secure.putInt(mContext.getContentResolver(),
793+
Settings.Secure.ACCESSIBILITY_ENABLED, 0);
794+
}
795+
}
796+
783797
/**
784798
* Sends the state to the clients.
785799
*/

0 commit comments

Comments
 (0)