OSDN Git Service

Fix a crash in accessibiility settings.
authorSvetoslav <svetoslavganov@google.com>
Thu, 8 Aug 2013 19:35:36 +0000 (12:35 -0700)
committerSvetoslav <svetoslavganov@google.com>
Thu, 8 Aug 2013 19:37:48 +0000 (12:37 -0700)
Change-Id: I27920668191742ab032de7b71c8f71cc35432e9f

src/com/android/settings/accessibility/AccessibilityUtils.java
src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java

index 66a3ed2..7282bce 100644 (file)
@@ -33,7 +33,8 @@ import java.util.Set;
  */
 class AccessibilityUtils {
     /**
-     * @return the set of enabled accessibility services
+     * @return the set of enabled accessibility services. If there are not services
+     * it returned the unmodifiable {@link Collections#emptySet()}.
      */
     static Set<ComponentName> getEnabledServicesFromSettings(Context context) {
         final String enabledServicesSetting = Settings.Secure.getString(
index 3059dcc..0c568f0 100644 (file)
@@ -39,6 +39,8 @@ import android.widget.TextView;
 import com.android.settings.R;
 import com.android.settings.accessibility.ToggleSwitch.OnBeforeCheckedChangeListener;
 
+import java.util.Collections;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
@@ -81,6 +83,10 @@ public class ToggleAccessibilityServicePreferenceFragment
         Set<ComponentName> enabledServices = AccessibilityUtils.getEnabledServicesFromSettings(
                 getActivity());
 
+        if (enabledServices == (Set<?>) Collections.emptySet()) {
+            enabledServices = new HashSet<ComponentName>();
+        }
+
         // Determine enabled services and accessibility state.
         ComponentName toggledService = ComponentName.unflattenFromString(preferenceKey);
         boolean accessibilityEnabled = false;