OSDN Git Service

Make Settings self-injected toggle switch searchable
authorJason Chiu <chiujason@google.com>
Tue, 26 Nov 2019 08:53:11 +0000 (16:53 +0800)
committerJason Chiu <chiujason@google.com>
Wed, 27 Nov 2019 09:11:26 +0000 (17:11 +0800)
- only skip ActivityTile
- skip items that has no static title

Bug: 132812768
Test: robotest
Change-Id: Idb3c111966c1dd96e2886aca2c7ead3b57ba119e

src/com/android/settings/search/SettingsSearchIndexablesProvider.java

index d504d9b..c619dec 100644 (file)
@@ -65,6 +65,7 @@ import com.android.settings.SettingsActivity;
 import com.android.settings.dashboard.DashboardFeatureProvider;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.slices.SettingsSliceProvider;
+import com.android.settingslib.drawer.ActivityTile;
 import com.android.settingslib.drawer.DashboardCategory;
 import com.android.settingslib.drawer.Tile;
 import com.android.settingslib.search.Indexable;
@@ -375,13 +376,19 @@ public class SettingsSearchIndexablesProvider extends SearchIndexablesProvider {
         final String currentPackageName = context.getPackageName();
         for (DashboardCategory category : dashboardFeatureProvider.getAllCategories()) {
             for (Tile tile : category.getTiles()) {
-                if (currentPackageName.equals(tile.getPackageName())) {
+                if (currentPackageName.equals(tile.getPackageName())
+                        && tile instanceof ActivityTile) {
+                    // Skip Settings injected items because they should be indexed in the sub-pages.
                     continue;
                 }
                 final SearchIndexableRaw raw = new SearchIndexableRaw(context);
+                final CharSequence title = tile.getTitle(context);
+                raw.title = TextUtils.isEmpty(title) ? null : title.toString();
+                if (TextUtils.isEmpty(raw.title)) {
+                    continue;
+                }
                 raw.key = dashboardFeatureProvider.getDashboardKeyForTile(tile);
-                raw.title = tile.getTitle(context).toString();
-                CharSequence summary = tile.getSummary(context);
+                final CharSequence summary = tile.getSummary(context);
                 raw.summaryOn = TextUtils.isEmpty(summary) ? null : summary.toString();
                 raw.summaryOff = raw.summaryOn;
                 raw.className = CATEGORY_KEY_TO_PARENT_MAP.get(tile.getCategory());