W Androidzie 8.0 wprowadzono rozszerzone funkcje wyszukiwania w menu Ustawienia. Z tego dokumentu dowiesz się, jak dodać ustawienie i upewnić się, że jest ono poprawnie zindeksowane na potrzeby wyszukiwania ustawień.
Utwórz ustawienia dostępne do indeksowania
Każdy fragment ustawień, który ma zostać zindeksowany, implementuje interfejs Indexable
ORAZ wymaga pola statycznego:
public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER
Po skonfigurowaniu fragmentu do indeksowania dodaj go do strony SearchIndexableResources
pod adresem:
packages/apps/Settings/src/com/android/settings/search/SearchIndexableResources.java
Metody opcjonalne
Ten interfejs SearchIndexProvider
ma 4 opcjonalne metody.
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 go zastępować. - Zwraca listę kluczy odpowiadających wynikom, które nie powinny się wyświetlać w przypadku danego użytkownika, urządzenia, konfiguracji itp.Podane tutaj klucze powinny być zgodne z polem KEY w atrybutach
SearchIndexableResource
iSearchIndexableRaw
. - Na przykład: pole Użycie danych nie powinno być wyświetlane użytkownikom, którzy nigdy nie mieli w urządzeniu karty SIM.
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.
Dlatego wszystko, co chcesz, aby pojawiały się w wynikach wyszukiwania, musisz uwzględnić w elemencie getXmlResourcesToIndex
lub getRawDataToIndex
.
Dodaj słowa kluczowe do ustawień
Aby ułatwić wyszukiwanie ustawienia, dodaj słowa kluczowe powiązane z ustawieniem, którego użytkownik może użyć do wyszukiwania.
Co warto wziąć pod uwagę podczas dodawania słów kluczowych:
- Słowa kluczowe to lista słów, które użytkownik niekoniecznie musi zobaczyć, ale mogą one stanowić część jego modelu psychicznego związanego z działaniem danego ustawienia.
- 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 słowo „wycisz” może być użyte do znalezienia ustawienia głośności.
Unikaj powielania treści
Jeśli bezwarunkowo pomijasz stronę ustawień, usuń indeksowanie strony oryginalnej, aby uniknąć duplikowania 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 i powiadomienia > Informacje o aplikacjach > Ustawienia > Pamięć > Wyczyść dane
- Sprawdź, czy ustawienia kierowania pojawiają się w wynikach wyszukiwania.
Wyszukanie prefiksu tytułu ustawienia spowoduje jego dopasowanie.
Aby sprawdzić, czy ta funkcja działa prawidłowo, można przeprowadzić takie testy roboboelektryczne:
packages/apps/Settings/tests/robotests/src/com/android/settings/search
Cel kompilacji to: RunSettingsRoboTests