diff options
| author | 2011-09-14 11:41:29 -0700 | |
|---|---|---|
| committer | 2011-09-14 11:41:40 -0700 | |
| commit | d07d60b9bc0fd2e88f58d6e68dbfadad1bdd31cf (patch) | |
| tree | 6f691d8e32ca2a05c14dab3dae877bc4c228f951 | |
| parent | 37fedf8b78dea969b97188fd3079fea5e71704be (diff) | |
AccessibilityManagerService not registered for removed packages.
The pakcage monitor in the AccessibilityManagerService was not
watching for packages that are removed. This is needes since
1) we need to remove the package from the enabled accessibility
serivces and clean up after the removed serivice; 2) we need to
disable accessibility if the last access serivices went away.
Change-Id: I06d33b411ce60703e5a2843107323ffc87046c16
| -rw-r--r-- | services/java/com/android/server/accessibility/AccessibilityManagerService.java | 44 | 
1 files changed, 32 insertions, 12 deletions
| diff --git a/services/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/java/com/android/server/accessibility/AccessibilityManagerService.java index 1e4faad55f31..10d384b47502 100644 --- a/services/java/com/android/server/accessibility/AccessibilityManagerService.java +++ b/services/java/com/android/server/accessibility/AccessibilityManagerService.java @@ -190,6 +190,22 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub              }              @Override +            public void onPackageRemoved(String packageName, int uid) { +                synchronized (mLock) { +                    Iterator<ComponentName> it = mEnabledServices.iterator(); +                    while (it.hasNext()) { +                        ComponentName comp = it.next(); +                        String compPkg = comp.getPackageName(); +                        if (compPkg.equals(packageName)) { +                            it.remove(); +                            updateEnabledAccessibilitySerivcesSettingLocked(mEnabledServices); +                            return; +                        } +                    } +                } +            } + +            @Override              public boolean onHandleForceStop(Intent intent, String[] packages,                      int uid, boolean doit) {                  synchronized (mLock) { @@ -209,18 +225,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub                          }                      }                      if (changed) { -                        it = mEnabledServices.iterator(); -                        StringBuilder str = new StringBuilder(); -                        while (it.hasNext()) { -                            if (str.length() > 0) { -                                str.append(':'); -                            } -                            str.append(it.next().flattenToShortString()); -                        } -                        Settings.Secure.putString(mContext.getContentResolver(), -                                Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES, -                                str.toString()); -                        manageServicesLocked(); +                        updateEnabledAccessibilitySerivcesSettingLocked(mEnabledServices);                      }                      return false;                  } @@ -252,6 +257,21 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub                  super.onReceive(context, intent);              } + +            private void updateEnabledAccessibilitySerivcesSettingLocked( +                    Set<ComponentName> enabledServices) { +                Iterator<ComponentName> it = enabledServices.iterator(); +                StringBuilder str = new StringBuilder(); +                while (it.hasNext()) { +                    if (str.length() > 0) { +                        str.append(':'); +                    } +                    str.append(it.next().flattenToShortString()); +                } +                Settings.Secure.putString(mContext.getContentResolver(), +                        Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES, +                        str.toString()); +            }          };          // package changes |