Android 8.0, Ayarlar menüsüne daha fazla arama özelliği ekler. Bu dokümanda, ayar ekleme ve ayarın Ayarlar araması için doğru şekilde dizine eklenmesini sağlama hakkında bilgi verilmektedir.
Dizine eklenebilir ayarlar oluşturma
Dizine eklenmesi gereken her Settings fragment'i Indexable
arabirimi uygular VE statik alanı gerektirir:
public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER
Parçanızı dizine eklemek için ayarladıktan sonra şu adresteki SearchIndexableResources
dosyasına ekleyin:
packages/apps/Settings/src/com/android/settings/search/SearchIndexableResources.java
İsteğe bağlı yöntemler
Bu SearchIndexProvider
arayüzünde dört isteğe bağlı yöntem vardır.
getXmlResourcesToIndex
- Parça içeriğiniz aşağıdaki kaynaklardan geliyorsa bunu geçersiz kılın:
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 şuradan DEĞİLSE bunu geçersiz kılın:
preference xml
- Dizine eklenecek ham verilerin (
SearchIndexableRaw
) bir listesini 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 bunu geçersiz kılmanıza nadiren ihtiyaç duyulur. - Belirli bir kullanıcı, cihaz, yapılandırma vb. için gösterilmemesi gereken sonuçlara karşılık gelen anahtarların listesini döndürür. Burada sağlanan anahtarlar,
SearchIndexableResource
veSearchIndexableRaw
'daki KEY alanıyla eşleşmelidir. - Örneğin: Veri Kullanımı, cihazında hiç SIM kartı bulunmayan kullanıcılara gösterilmemelidir.
Dizine eklenemeyen anahtarlara örnek:
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 fragmanla ilişkili tercih denetleyicilerinin listesini döndürür. Bu liste, satır içi sonuçlar oluşturmak, dizine eklenemeyenleri güncellemek vb. için kullanılır.
Bu nedenle, aramada gösterilmesini istediğiniz her şey getXmlResourcesToIndex
veya getRawDataToIndex
alanına dahil edilmelidir.
Ayarlarınız için anahtar kelimeler ekleme
Bir ayarın kolayca aranabilir olmasını sağlamak için kullanıcının ayar için arama yaparken kullanabileceği, ayarla alakalı anahtar kelimeler ekleyin.
Anahtar kelime eklerken dikkat edilmesi gereken noktalar:
- Anahtar kelimeler, kullanıcının mutlaka görmediği ancak ayarın işleyiş şekliyle ilgili zihinsel modelinin bir parçası olabilecek kelimelerin listesidir.
- Bunlar, kullanıcının ayarınıza ulaşmak için yazabileceği kelimelerdir.
- Eş anlamlı kelimeler veya ayarla ilişkili herhangi bir kelime kullanılabilir.
- Örneğin, Ses ayarını bulmak için "mute" (sessize al) kullanılabilir.
Yinelenen içeriklerden kaçının
Bir ayarlar sayfasını koşulsuz olarak engelliyorsanız sonuçların yinelenmesini önlemek için orijinal sayfanın dizine eklenmesini kaldırın.
- Engellediğiniz sayfanın
PreferenceFragment
değerini bulun. SearchIndexProvider
öğesini 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 Alanı > Verileri Temizle
- Hedef ayarlarının aramada gösterildiğini doğrulayın.
Bir ayarın başlığının ön ekini aramak, ayarla eşleşme sağlar.
Bu robolectric testleri, bu özelliğin uygulanmasını doğrulamak için çalıştırılabilir:
packages/apps/Settings/tests/robotests/src/com/android/settings/search
Derleme hedefi: RunSettingsRoboTests