Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Pencarian Universal

Android 8.0 menambahkan kemampuan pencarian yang diperluas untuk menu Pengaturan . Dokumen ini menjelaskan cara menambahkan pengaturan dan memastikannya diindeks dengan benar untuk pencarian Pengaturan.

Membuat pengaturan yang dapat diindeks

Setiap fragmen Pengaturan yang perlu diindeks mengimplementasikan antarmuka yang Dapat Indexable , DAN memerlukan bidang statis:

public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER

Setelah Anda menyiapkan fragmen untuk diindeks, tambahkan ke SearchIndexableResources ada 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 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;
}

getRawDataToIndex

  • Ganti ini jika konten fragmen Anda BUKAN dari: preference xml
  • Mengembalikan daftar data Mentah ( SearchIndexableRaw ) untuk 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;
}

getNonIndexableKeys

  • Jika fragmen Anda adalah DashboardFragment , Anda jarang perlu menimpanya.
  • Mengembalikan daftar kunci yang sesuai dengan hasil yang seharusnya tidak muncul untuk pengguna, perangkat, konfigurasi tertentu, dll. Kunci yang diberikan di sini harus cocok dengan bidang KEY di SearchIndexableResource dan SearchIndexableRaw .
  • Misalnya: Penggunaan Data tidak akan ditampilkan untuk pengguna yang tidak pernah memiliki kartu SIM di perangkat mereka.

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;
}

getPreferenceControllers

Menampilkan daftar pengontrol preferensi yang terkait dengan fragmen ini. Daftar ini digunakan untuk membentuk hasil sebaris, memperbarui yang tidak dapat diindeks, dll.

Jadi, semua yang ingin Anda tampilkan dalam pencarian harus disertakan di getXmlResourcesToIndex atau getRawDataToIndex .

Menambahkan kata kunci untuk pengaturan Anda

Untuk memastikan pengaturan mudah dicari, tambahkan kata kunci yang relevan dengan pengaturan yang dapat digunakan pengguna untuk mencari pengaturan.

Hal-hal yang perlu dipertimbangkan saat menambahkan kata kunci:

  • Kata kunci adalah daftar kata yang tidak perlu dilihat oleh pengguna tetapi mungkin menjadi bagian dari model mental mereka tentang cara kerja pengaturan.
  • Ini adalah kata-kata yang mungkin diketik pengguna untuk membuka setelan Anda.
  • Mereka dapat berupa sinonim atau kata apa pun yang terkait dengan pengaturan dapat digunakan.
  • Misalnya, "bisu" mungkin digunakan untuk menemukan pengaturan Volume.

Menghindari duplikasi

Jika Anda menekan halaman pengaturan tanpa syarat, hapus pengindeksan halaman asli untuk menghindari duplikasi hasil.

  1. Temukan PreferenceFragment halaman yang Anda sembunyikan.
  2. Hapus SearchIndexProvider .

Validasi

Untuk menguji kemampuan penelusuran dari pengaturan baru:

  1. Instal versi terbaru O di perangkat.
  2. Indeks ulang database dengan memilih:
  3. Pengaturan> Aplikasi & Pemberitahuan> Info Aplikasi> Pengaturan> Penyimpanan> Hapus Data
  4. Verifikasi pengaturan target yang muncul dalam pencarian.
    Pencarian untuk awalan dari judul pengaturan akan cocok dengannya.

Uji robolectric ini dapat dijalankan untuk memvalidasi implementasi fitur ini:
packages/apps/Settings/tests/robotests/src/com/android/settings/search

Target pembuatannya adalah: RunSettingsRoboTests