OSDN Git Service

Settings crashing if there are no installed accessibility services.
authorSvetoslav <svetoslavganov@google.com>
Wed, 8 May 2013 19:14:15 +0000 (12:14 -0700)
committerSvetoslav <svetoslavganov@google.com>
Wed, 8 May 2013 19:14:18 +0000 (12:14 -0700)
If there is no installed accessibility services and the user goes into
the accessibility settings section, the app crashes. This is due to a
lacking null pointer check against the list of installed services
returned by the accessibility manager. We should not have returned
null, rather an empty list - too late now, sigh...

bug:8871034

Change-Id: Id3800d398af83868862847fa7ed861a9dee61c8f

src/com/android/settings/AccessibilitySettings.java

index a4438d0..ea4940e 100644 (file)
@@ -570,11 +570,16 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements
     }
 
     private void loadInstalledServices() {
+        Set<ComponentName> installedServices = sInstalledServices;
+        installedServices.clear();
+
         List<AccessibilityServiceInfo> installedServiceInfos =
                 AccessibilityManager.getInstance(getActivity())
                         .getInstalledAccessibilityServiceList();
-        Set<ComponentName> installedServices = sInstalledServices;
-        installedServices.clear();
+        if (installedServiceInfos == null) {
+            return;
+        }
+
         final int installedServiceInfoCount = installedServiceInfos.size();
         for (int i = 0; i < installedServiceInfoCount; i++) {
             ResolveInfo resolveInfo = installedServiceInfos.get(i).getResolveInfo();