Android 8.0, Ayarlar menüsüne genişletilmiş arama özellikleri ekledi. Bu dokümanda, bir ayarın nasıl ekleneceği ve Ayarlar'da arama için düzgün şekilde dizine eklendiğinden nasıl emin olunacağı açıklanmaktadır.
Dizine eklenebilir ayarlar oluşturma
Dizine eklenmesi gereken her Ayarlar parçası Indexable
arayüzü uygular VE statik alanı gerektirir:
public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER
Parçanız dizine eklenmek üzere ayarlandıktan sonra şu konumda bulunan SearchIndexableResources
klasörüne ekleyin:
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 yöntem vardır.
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ılmanız gerekir. - Belirtilen kullanıcı, cihaz, yapılandırma vb. için görünmemesi gereken sonuçlara karşılık gelen anahtarların listesini döndürür. Burada sağlanan anahtarlar,
SearchIndexableResource
veSearchIndexableRaw
içindeki KEY alanıyla eşleşmelidir. - Örneğin: Veri Kullanımı, cihazlarında hiç SIM kart olmamış kullanıcılara gösterilmemelidir.
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.
Bu nedenle, aramada görünmesini istediğiniz her şey getXmlResourcesToIndex
veya getRawDataToIndex
içinde yer almalıdır.
Ayarlarınız için anahtar kelimeler ekleyin
Bir ayarın kolayca aranabilir olmasını sağlamak için kullanıcının ayarı aramak için kullanabileceği ayarla alakalı anahtar kelimeler ekleyin.
Anahtar kelime eklerken göz önünde bulundurulması gereken noktalar:
- Anahtar kelimeler, kullanıcının her zaman görmediği ancak ayarın işleyiş şekliyle ilgili zihinsel modelinin bir parçası olabilecek kelimelerin bir listesidir.
- 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, Ses düzeyi ayarını bulmak için "sesi kapat" kullanılabilir.
Yinelenenlerden kaçının
Bir ayarlar sayfasını koşulsuz olarak atıyorsanız sonuçların yinelenmesini önlemek için orijinal sayfanın dizine eklenmesini kaldırın.
- 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 özelliğin uygulanmasını doğrulamak için aşağıdaki robotik testler çalıştırılabilir:
packages/apps/Settings/tests/robotests/src/com/android/settings/search
Derleme hedefi: RunSettingsRoboTests