W Androidzie 8.0 wprowadzono rozszerzone funkcje wyszukiwania w menu Ustawienia. Ten opisuje, jak dodać ustawienie i upewnić się, że jest ono poprawnie zindeksowane w przypadku Wyszukiwanie ustawień.
Utwórz ustawienia dostępne do indeksowania
Każdy fragment ustawień, który musi zostać zindeksowany, implementuje tag
Indexable
interfejs ORAZ wymaga statycznego parametru
pole:
public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER
Po skonfigurowaniu fragmentu pod kątem indeksowania dodaj go do
Znaleziono SearchIndexableResources
pod adresem:
packages/apps/Settings/src/com/android/settings/search/SearchIndexableResources.java
Metody opcjonalne
Ten SearchIndexProvider
interfejs ma cztery opcjonalne
.
getXmlResourcesToIndex.
- Zastąp to ustawienie, jeśli treść fragmentu pochodzi z:
preference xml
- Zwraca preferencję XML w postaci listy do indeksowania.
Przykład zasobów XML:
public List<SearchIndexableResource> getXmlResourcesToIndex(Context context, boolean enabled) { ArrayList<SearchIndexableResource> result = new ArrayList<SearchIndexableResource>(); SearchIndexableResource sir = new SearchIndexableResource(context); sir.xmlResId = R.xml.display_settings; result.add(sir); return result; }
getRawDataToIndex
- Zastąp to, jeśli treść fragmentu NIE pochodzi od:
preference xml
- Zwraca listę nieprzetworzonych danych (
SearchIndexableRaw
) do zindeksowania.
Przykład nieprzetworzonych danych:
public List<SearchIndexableRaw> getRawDataToIndex(Context context, boolean enabled) { final List<SearchIndexableRaw> result = new ArrayList<>(); final Resources res = context.getResources(); // Add fragment title SearchIndexableRaw data = new SearchIndexableRaw(context); data.title = res.getString(R.string.wifi_settings); data.screenTitle = res.getString(R.string.wifi_settings); data.keywords = res.getString(R.string.keywords_wifi); data.key = DATA_KEY_REFERENCE; result.add(data); return result; }
getNonIndexableKeys
- Jeśli fragment to
DashboardFragment
, rzadko trzeba zastąpić to ustawienie. - Zwraca listę kluczy odpowiadającą wynikom, które nie powinny się wyświetlać
dla danego użytkownika, urządzenia, konfiguracji itd.Podane tu klucze powinny
pasują do pola KEY w
SearchIndexableResource
iSearchIndexableRaw
- Na przykład: pole Użycie danych nie powinno być wyświetlane użytkownikom, którzy nigdy kartę SIM w urządzeniu;
Przykład kluczy niemożliwych do zindeksowania:
public List<String> getNonIndexableKeys(Context context) { final List<String> keys = super.getNonIndexableKeys(context); if (!checkIntentAction(context, "android.settings.TERMS")) { keys.add(KEY_TERMS); } if (!checkIntentAction(context, "android.settings.LICENSE")) { keys.add(KEY_LICENSE); } if (!checkIntentAction(context, "android.settings.COPYRIGHT")) { keys.add(KEY_COPYRIGHT); } if (!checkIntentAction(context, "android.settings.WEBVIEW_LICENSE")) { keys.add(KEY_WEBVIEW_LICENSE); } return keys; }
kontrolery getPreferenceControllers,
Zwraca listę kontrolerów preferencji powiązanych z tym fragmentem. Ta lista służy do tworzenia wyników w tekście, aktualizowania elementów, których nie można zindeksować itp.
Wszystko, co chcesz, aby wyświetlały się w wynikach wyszukiwania, musi znajdować się w jednym z
getXmlResourcesToIndex
lub getRawDataToIndex
.
Dodaj słowa kluczowe do ustawień
Aby ułatwić wyszukiwanie ustawienia, dodaj słowa kluczowe odpowiednie dla za pomocą którego użytkownik może wyszukać dane ustawienie.
Co warto wziąć pod uwagę podczas dodawania słów kluczowych:
- Słowa kluczowe to lista słów, które użytkownik niekoniecznie widzi, ale może mogą też być wzorem do naśladowania w tym kontekście.
- To są słowa, które użytkownik może wpisać, aby przejść do Twojego ustawienia.
- Mogą to być synonimy lub dowolne słowa powiązane z ustawieniem.
- Na przykład „wycisz” może posłużyć do znalezienia ustawienia głośności.
Unikaj powielania treści
Jeśli bezwarunkowo ukrywasz stronę ustawień, usuń indeksowanie w celu uniknięcia powielania wyników.
- Znajdź element
PreferenceFragment
strony, którą ukrywasz. - Usuń
SearchIndexProvider
.
Weryfikacja
Aby sprawdzić możliwość wyszukiwania nowego ustawienia:
- Zainstaluj najnowszą wersję O na urządzeniu.
- Ponownie zindeksuj bazę danych, wybierając: Ustawienia > Aplikacje Powiadomienia > Informacje o aplikacjach > Ustawienia > Miejsce na dane > Wyczyść dane
- Sprawdź, czy ustawienia kierowania pojawiają się w wynikach wyszukiwania.
Wyszukanie prefiksu tytułu ustawienia spowoduje jego dopasowanie.
Można przeprowadzić takie testy automatyczne, aby sprawdzić poprawność wdrożenia
cecha:
packages/apps/Settings/tests/robotests/src/com/android/settings/search
Cel kompilacji to: RunSettingsRoboTests