Genel arama

Android 8.0, Ayarlar menüsüne genişletilmiş arama özellikleri ekledi. Bu Bu dokümanda, bir ayarın nasıl ekleneceği ve bu ayarın Ayarlar arama.

Dizine eklenebilir ayarlar oluşturun

Dizine eklenmesi gereken her Ayarlar parçası, Indexablearayüz VE alan:

public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER

Parçanız dizine eklenmek üzere ayarlandıktan sonra SearchIndexableResources bulundu:
packages/apps/Settings/src/com/android/settings/search/SearchIndexableResources.java

İsteğe bağlı yöntemler

Bu SearchIndexProviderarayüzde isteğe bağlı dört farklı yöntemlerine göz atın.

getXmlResourcesToIndex

  • Parça içeriğiniz şu kaynaktan geliyorsa bunu geçersiz kıl: preference xml
  • Dizine eklenecek bir liste olarak XML tercihini döndürür.

XML kaynakları örneği:

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

  • Parça içeriğiniz şu kaynaktan DEĞİLSE bunu geçersiz kılın: preference xml
  • Dizine eklenecek ham verilerin listesini (SearchIndexableRaw) döndürür.

Ham veri örneği:

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

  • Parçanız bir DashboardFragment ise nadiren bunu geçersiz kıl.
  • Gösterilmemesi gereken sonuçlara karşılık gelen anahtarların listesini döndürür ör. burada verilen anahtarlar da dahil. Burada verilen anahtarlar, SearchIndexableResource içinde KEY alanıyla eşleşen SearchIndexableRaw.
  • Örneğin, Veri Kullanımı hiçbir zaman SIM kart takılır.

Dizine eklenemeyen anahtarlar örneği:

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

Bu parçayla ilişkilendirilmiş tercih denetleyicilerinin listesini döndürür. Bu liste, satır içi sonuçları oluşturmak, dizine eklenemez öğeleri güncellemek vb. için kullanılır.

Dolayısıyla, aramada görünmesini istediğiniz her şey getXmlResourcesToIndex veya getRawDataToIndex.

Ayarlarınız için anahtar kelimeler ekleyin

Bir ayarın kolayca aranabilmesini sağlamak için o ayar ile alakalı anahtar kelimeler kullanıcının ayarı aramak için kullanabileceği ayardır.

Anahtar kelime eklerken göz önünde bulundurulması gereken noktalar:

  • Anahtar kelimeler, kullanıcının görmek zorunda olmadığı ancak görebileceği kelimelerin listesidir düzenin işleyişiyle ilgili zihinsel modellerinde yer almalı.
  • Bunlar, kullanıcının ayarınıza ulaşmak için yazabileceği kelimelerdir.
  • Bunlar, eş anlamlılar olabilir veya ayarla ilişkilendirilmiş tüm kelimeler kullanılabilir.
  • Örneğin, "sessiz" Ses düzeyi ayarını bulmak için kullanılabilir.

Yinelenenlerden kaçının

Bir ayarlar sayfasını koşulsuz olarak atlıyorsanız orijinal sayfayı kullanabilirsiniz.

  1. Engellemekte olduğunuz sayfanın PreferenceFragment kısmını bulun.
  2. SearchIndexProvider kaldırın.

Doğrulama

Yeni bir ayarın aranabilirliğini test etmek için:

  1. Cihaza O'nun son sürümünü yükleyin.
  2. Aşağıdakileri seçerek veritabanını yeniden dizine ekleyin:
  3. Ayarlar > Uygulamalar ve Bildirimler > Uygulama bilgileri > Ayarlar > Depolama > Verileri Temizle
  4. Hedef ayarlarının aramada göründüğünü doğrulayın.
    . Bir ayarın başlığının ön ekini aradığınızda bu ön ekle eşleşir.

Bu fonksiyonel testlerin uygulanmasını doğrulamak için özellik:
packages/apps/Settings/tests/robotests/src/com/android/settings/search

Derleme hedefi: RunSettingsRoboTests