From b4b30828e9a15540bae6676f4b7a1910aaa9254e Mon Sep 17 00:00:00 2001 From: Svetoslav Date: Fri, 11 Apr 2014 17:06:17 -0700 Subject: [PATCH] Adding search for dynamic accessibility settings. The accessibility service list is dynamically constructed, therefore we need a local provider that will emit accessibility service data to be indexed. bug:13928519 Change-Id: Idd29cd1698f36b54fabf013dfa36029412bbb8a9 --- .../accessibility/AccessibilitySettings.java | 49 +++++++++++++++++++++- .../settings/search/SearchIndexableResources.java | 2 +- 2 files changed, 49 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/accessibility/AccessibilitySettings.java b/src/com/android/settings/accessibility/AccessibilitySettings.java index 9c1e30040d..1144985749 100644 --- a/src/com/android/settings/accessibility/AccessibilitySettings.java +++ b/src/com/android/settings/accessibility/AccessibilitySettings.java @@ -20,6 +20,7 @@ import android.accessibilityservice.AccessibilityServiceInfo; import android.app.ActivityManagerNative; import android.content.ComponentName; import android.content.Context; +import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.pm.ServiceInfo; import android.content.res.Configuration; @@ -32,6 +33,7 @@ import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceCategory; import android.preference.PreferenceScreen; +import android.provider.SearchIndexableResource; import android.provider.Settings; import android.text.TextUtils; import android.text.TextUtils.SimpleStringSplitter; @@ -48,7 +50,11 @@ import com.android.settings.DialogCreatable; import com.android.settings.R; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.Utils; +import com.android.settings.search.BaseSearchIndexProvider; +import com.android.settings.search.Indexable; +import com.android.settings.search.SearchIndexableRaw; +import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -59,7 +65,7 @@ import java.util.Set; * Activity with the accessibility settings. */ public class AccessibilitySettings extends SettingsPreferenceFragment implements DialogCreatable, - Preference.OnPreferenceChangeListener { + Preference.OnPreferenceChangeListener, Indexable { private static final float LARGE_FONT_SCALE = 1.3f; @@ -570,4 +576,45 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements installedServices.add(installedService); } } + + public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = + new BaseSearchIndexProvider() { + @Override + public List getRawDataToIndex(Context context, boolean enabled) { + List indexables = new ArrayList(); + + PackageManager packageManager = context.getPackageManager(); + AccessibilityManager accessibilityManager = (AccessibilityManager) + context.getSystemService(Context.ACCESSIBILITY_SERVICE); + + String screenTitle = context.getResources().getString( + R.string.accessibility_services_title); + + // Indexing all services, reagardles if enabled. + List services = accessibilityManager + .getInstalledAccessibilityServiceList(); + final int serviceCount = services.size(); + for (int i = 0; i < serviceCount; i++) { + AccessibilityServiceInfo service = services.get(i); + SearchIndexableRaw indexable = new SearchIndexableRaw(context); + indexable.title = service.getResolveInfo().loadLabel(packageManager).toString(); + indexable.summaryOn = context.getString(R.string.accessibility_feature_state_on); + indexable.summaryOff = context.getString(R.string.accessibility_feature_state_off); + indexable.screenTitle = screenTitle; + indexables.add(indexable); + } + + return indexables; + } + + @Override + public List getXmlResourcesToIndex(Context context, + boolean enabled) { + List indexables = new ArrayList(); + SearchIndexableResource indexable = new SearchIndexableResource(context); + indexable.xmlResId = R.xml.accessibility_settings; + indexables.add(indexable); + return indexables; + } + }; } diff --git a/src/com/android/settings/search/SearchIndexableResources.java b/src/com/android/settings/search/SearchIndexableResources.java index c7914c8477..eae7a4da01 100644 --- a/src/com/android/settings/search/SearchIndexableResources.java +++ b/src/com/android/settings/search/SearchIndexableResources.java @@ -186,7 +186,7 @@ public final class SearchIndexableResources { sResMap.put(AccessibilitySettings.class.getName(), new SearchIndexableResource(RANK_ACCESSIBILITY, - R.xml.accessibility_settings, + NO_DATA_RES_ID, AccessibilitySettings.class.getName(), R.drawable.ic_settings_accessibility)); -- 2.11.0