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ı,
Indexable
arayü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 SearchIndexProvider
arayü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şenSearchIndexableRaw
. - Ö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.
- Engellemekte olduğunuz sayfanın
PreferenceFragment
kısmını bulun. SearchIndexProvider
kaldırın.
Doğrulama
Yeni bir ayarın aranabilirliğini test etmek için:
- Cihaza O'nun son sürümünü yükleyin.
- Aşağıdakileri seçerek veritabanını yeniden dizine ekleyin: Ayarlar > Uygulamalar ve Bildirimler > Uygulama bilgileri > Ayarlar > Depolama > Verileri Temizle
- 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