Android 8.0 menambahkan kemampuan pencarian yang diperluas untuk menu Pengaturan . Dokumen ini menjelaskan cara menambahkan pengaturan dan memastikan pengaturan tersebut diindeks dengan benar untuk pencarian Pengaturan.
Membuat pengaturan yang dapat diindeks
Setiap fragmen Pengaturan yang perlu diindeks mengimplementasikan antarmuka Indexable
, DAN memerlukan bidang statis:
public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER
Setelah fragmen Anda disiapkan untuk pengindeksan, tambahkan ke SearchIndexableResources
yang ditemukan di:
packages/apps/Settings/src/com/android/settings/search/SearchIndexableResources.java
Metode opsional
Antarmuka SearchIndexProvider
ini memiliki empat metode opsional.
getXmlResourcesToIndex
- Ganti ini jika konten fragmen Anda berasal dari:
preference xml
- Mengembalikan preferensi XML sebagai daftar yang akan diindeks.
Contoh sumber daya 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; }
dapatkanRawDataToIndex
- Ganti ini jika konten fragmen Anda BUKAN dari:
preference xml
- Mengembalikan daftar data mentah (
SearchIndexableRaw
) yang akan diindeks.
Contoh data mentah:
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; }
dapatkanNonIndexableKeys
- Jika fragmen Anda adalah
DashboardFragment
, Anda jarang perlu menggantinya. - Mengembalikan daftar kunci yang sesuai dengan hasil yang tidak akan muncul untuk pengguna, perangkat, konfigurasi tertentu, dll. Kunci yang disediakan di sini harus cocok dengan bidang KEY di
SearchIndexableResource
danSearchIndexableRaw
. - Misalnya: Penggunaan Data tidak akan muncul untuk pengguna yang belum pernah memiliki kartu SIM di perangkatnya.
Contoh kunci yang tidak dapat diindeks:
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; }
dapatkanPreferenceControllers
Mengembalikan daftar pengontrol preferensi yang terkait dengan fragmen ini. Daftar ini digunakan untuk membentuk hasil sebaris, memperbarui yang tidak dapat diindeks, dll.
Oleh karena itu, semua yang ingin Anda tampilkan dalam penelusuran harus disertakan dalam getXmlResourcesToIndex
atau getRawDataToIndex
.
Menambahkan kata kunci untuk pengaturan Anda
Untuk memastikan setelan mudah dicari, tambahkan kata kunci yang relevan dengan setelan yang mungkin digunakan pengguna untuk menelusuri setelan.
Hal-hal yang perlu dipertimbangkan saat menambahkan kata kunci:
- Kata kunci adalah daftar kata yang belum tentu dilihat pengguna namun mungkin menjadi bagian dari model mental mereka tentang cara kerja pengaturan.
- Ini adalah kata-kata yang mungkin diketikkan pengguna untuk membuka pengaturan Anda.
- Kata-kata tersebut dapat berupa sinonim atau kata apa pun yang terkait dengan latar dapat digunakan.
- Misalnya, "mute" mungkin digunakan untuk menemukan pengaturan Volume.
Menghindari duplikasi
Jika Anda menyembunyikan halaman pengaturan tanpa syarat, hapus pengindeksan halaman asli untuk menghindari duplikasi hasil.
- Temukan
PreferenceFragment
halaman yang Anda sembunyikan. - Hapus
SearchIndexProvider
.
Validasi
Untuk menguji kemampuan penelusuran pada setelan baru:
- Instal O versi terbaru pada perangkat.
- Indeks ulang database dengan memilih: Pengaturan > Aplikasi & Pemberitahuan > Info aplikasi > Pengaturan > Penyimpanan > Hapus Data
- Verifikasi pengaturan target muncul dalam pencarian.
Mencari awalan judul suatu pengaturan akan cocok dengannya.
Uji robotik berikut dapat dijalankan untuk memvalidasi penerapan fitur ini:
packages/apps/Settings/tests/robotests/src/com/android/settings/search
Target pembangunannya adalah: RunSettingsRoboTests