Özel arama önerileri ekleyin

Android arama iletişim kutusunu veya arama widget'ını kullanırken şunları sağlayabilirsiniz: uygulamanızdaki verilerden oluşturulan özel arama önerileri. Örneğin, uygulamanız bir sözlükse, sözlükte aldığınız kelime öbeklerini kullanıcı girmeyi tamamlamadan önce arama alanına girilen metinle eşleşmelidir daha fazla bilgi edineceksiniz. Bu öneriler değerlidir çünkü ve buna anında erişim sağlar. Şekil 1'de bir örnek gösterilmiştir arama iletişim kutusu gösterilir.

Özel öneriler sunduğunuzda bunları Google Haberler'de erişimi sağlayan hızlı Arama Kutusu, içeriğinize Google uygulamasını indirin.

Özel öneriler eklemeden önce Android arama iletişim kutusunu veya Arama widget'ını kullanabilirsiniz. Bkz. Oluşturma arama arayüzü ve İçerik sağlayıcı ile karşılaştırın.

Temel bilgiler

Şekil 1. Şunları içeren arama iletişim kutusunun ekran görüntüsü özel arama önerileri.

Kullanıcı özel bir öneri seçtiğinde sistem, Intent - arama yapılabilir etkinlik. ACTION_SEARCH. bu işlemi gerçekleştirdikten sonra, raporla ilgili özel önerilerinizi ACTION_VIEW veya ve aynı zamanda işletmenizle alakalı verileri de seçilen öneri. Sözlük örneğinde, kullanıcı bir öneride bulunmak yerine, uygulama hemen ilgili kelimenin tanımını açabilir .

Özel öneriler sunmak için aşağıdaki adımları uygulayın:

  • Aşağıda açıklandığı gibi temel bir aranabilir etkinlik uygulama Arama arayüzü oluşturun.
  • Aranabilir yapılandırmayı, içerik hakkındaki bilgilerle değiştir sağlayıcı olabilir.
  • Örneğin bir tablo SQLiteDatabase, ve tabloyu gerekli sütunlarla biçimlendirin.
  • İçerik oluşturma sağlayıcı olarak belirlemeniz gerekir. manifest dosyanıza ekleyin.
  • Kullanıcı bir seçim yaptığında gönderilecek Intent türünü tanımlayın bir öneride bulunacağız.

Android sisteminin arama iletişim kutusunu gösterdiği gibi, arama önerileri. Sistemin gönderebileceği bir içerik sağlayıcıya önerilerinizi alabilirsiniz. Okunanlar İçerik sağlayıcılar içerik sağlayıcı oluşturmayı öğrenin.

Sistem, etkinliğinizin aranabilir olduğunu tespit ettiğinde ve önerilerinde bulunduğunda, kullanıcı bir arama sorgusu sorgu:

  1. Sistem, arama sorgusu metnini alır. Yani, girilen metin şimdiye kadar işlem yapıp içerik sağlayıcınıza öneriler.
  2. İçerik sağlayıcınız şunu döndürür: Cursor. arama sorgusuyla alakalı tüm önerileri işaret eden metin.
  3. Sistem, Google tarafından sağlanan önerilerin bir listesini Cursor

Özel öneriler görüntülendikten sonra aşağıdakiler gerçekleşebilir:

  • Kullanıcı başka bir harf girerse veya sorguyu herhangi bir şekilde değiştirirse ve öneri listesi uygun şekilde güncellenir.
  • Kullanıcı aramayı yürütürse öneriler yoksayılır ve arama, normal ACTION_SEARCH intent.
  • Kullanıcı bir öneri seçerse, aranabilir sayfanıza bir amaç gönderilir. etkinliği, uygulamanızın açılabilmesi için özel bir işlem ve özel veriler emin olmanız gerekir.

Aranabilir yapılandırmayı değiştirme

Özel öneriler için destek eklemek istiyorsanız android:searchSuggestAuthority özelliğini Aranabilir yapılandırma dosyanızdaki <searchable> öğesi, aşağıdaki örnekte gösterildiği gibi:

<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="@string/app_label"
    android:hint="@string/search_hint"
    android:searchSuggestAuthority="com.example.MyCustomSuggestionProvider">
</searchable>

Oluşturduğunuz niyetin türüne bağlı olarak ek özelliklere her bir öneriye ekleyin ve sorguları içeriğinize nasıl biçimlendirmek istediğinizi sağlar. İsteğe bağlı diğer özellikler aşağıda açıklanmıştır. bölümlerini kontrol edin.

İçerik sağlayıcı oluşturun

Özel önerilere yönelik bir içerik sağlayıcı oluşturmak için öncelikle İçerik sağlayıcılar içerik sağlayıcı oluşturmayı öğrenin. Özelleştirilmiş diğer içerik sağlayıcılara benzer. Ancak her bir sorgu için Cursor içindeki ilgili satır, sistemin anladığı ve biçimlendirmek için kullandığı belirli sütunlara yer verme öneriler.

Kullanıcı, arama iletişim kutusuna veya arama widget'ına metin girdiğinde, sistem şunu arayarak içerik sağlayıcınızı öneri olarak arar: query(). tıklayın. query() uygulamanızda, içerik sağlayıcınızın öneri verilerinizde arama yapması ve İyi olduğunu belirlediği satırları işaret eden Cursor öneriler.

Özel öneriler için içerik sağlayıcı oluşturmayla ilgili ayrıntılar: ele alacağız:

Öneri sorgusunu işleme
Sistem, istekleri içerik sağlayıcınıza nasıl gönderir ve talepleri nasıl ele alır? gerekir.
Öneri tablosu oluşturma
Sistemin Her sorguda Cursor sonuç döndürüldü.

Öneri sorgusunu işleme

Sistem, içerik sağlayıcınızdan öneri istediğinde içerik sağlayıcınızın query() yöntemi. Bu yöntemi şunlar için uygulayın: öneri verilerinizde arama yapıp bir Cursor alakalı olduğunu düşündüğünüz önerileri görebilirsiniz.

Sistemin ilettiği parametrelerin özetini burada bulabilirsiniz. query() yöntemi; şu sırayla listelenir:

  1. uri

    Her zaman içerik Uri, biçimlendirme: şöyle olur:

    content://your.authority/optional.suggest.path/SUGGEST_URI_PATH_QUERY
    

    Varsayılan davranış, sistemin bu URI'yı iletmesi ve sorguyu eklemesidir şu mesajı gönderin:

    content://your.authority/optional.suggest.path/SUGGEST_URI_PATH_QUERY/puppies
    

    Uçtaki sorgu metni URI kodlama kuralları kullanılarak kodlandığından, kodu çözmeniz gerekir.

    optional.suggest.path kısmı yalnızca içinde arama yapılabilir yapılandırma dosyanızda android:searchSuggestPath özelliği için de geçerlidir. Yalnızca Aranabilir birden fazla etkinlik için aynı içerik sağlayıcıyı kullanmanız gerekir. Eğer Bu durumda, öneri sorgusunun kaynağını netleştirin.

  2. projection
    Her zaman null.
  3. selection
    android:searchSuggestSelection özelliğini kullanabilirsiniz. Özelliği görmüyorsanız null android:searchSuggestSelection özelliğini tanımlayın. İlgili içeriği oluşturmak için kullanılan Bu konu aşağıdaki bölümde daha ayrıntılı olarak ele alınmaktadır.
  4. selectionArgs
    Aşağıdaki koşulda arama sorgusunu, dizinin ilk ve tek öğesi olarak içerir: android:searchSuggestSelection özelliğini yapılandırabilirsiniz. Herhangi bir android:searchSuggestSelection ise bu parametre null olur. Aşağıdaki bölümde bu konu daha ayrıntılı olarak ele alınmaktadır.
  5. sortOrder
    Her zaman null.

Sistem, arama sorgusu metnini size iki şekilde gönderebilir. Varsayılan yöntem öğesine iletilen içerik URI'sinin son yolu olarak eklenmesine olanak tanır. uri parametresinden yararlanın. Ancak, aranabilir yapılandırmanızın android:searchSuggestSelection özelliğine sahip olursa, sorgu metni bunun yerine selectionArgs dize dizisi. Bu iki seçenek, tıklayın.

Sorguyu URI'da alma

Varsayılan olarak sorgu, uri son segmenti olarak eklenir parametresi: Uri nesnesi. Sorgu metnini durum, kullanım getLastPathSegment(), aşağıdaki örnekte gösterildiği gibi:

Kotlin

val query: String = uri.lastPathSegment.toLowerCase()

Java

String query = uri.getLastPathSegment().toLowerCase();

Bu işlem, Uri işlevinin sorgu olan son segmentini döndürür. kullanıcı tarafından girilen metin.

Seçim bağımsız değişkenlerindeki sorguyu alın

Sizin için URI'yı kullanmak yerine daha mantıklı olabilir. query() yöntemini kullanmak için gereken her şeyi almak yardımcı olmak için, selection ve selectionArgs parametrelerini uygun değerleri taşımak için kullanırsınız. Burada destek kaydınıza android:searchSuggestSelection özelliğini ekleyin. SQLite seçim dizenizle aranabilir bir yapılandırma sunar. Seçilenler dizesinin her yerine yer tutucu olarak bir soru işareti (?) ekleyin anlamına gelir. Sistem, query() öğesini seçim dizesiyle şu şekilde çağırır: İlk öğe olarak selection parametresi ve arama sorgusu selectionArgs dizisinde bulunur.

Örneğin, bir iş kırılım yapısı oluşturmak için Tam metin oluşturmak için android:searchSuggestSelection özelliği arama ifadesi:

<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="@string/app_label"
    android:hint="@string/search_hint"
    android:searchSuggestAuthority="com.example.MyCustomSuggestionProvider"
    android:searchSuggestIntentAction="android.intent.action.VIEW"
    android:searchSuggestSelection="word MATCH ?">
</searchable>

Bu yapılandırmada, query() yönteminiz selection parametresini "word MATCH ?" ve selectionArgs parametresini kullanın. Bunları bir SQLite query(). kullanılarak, bu fonksiyonlar yeniden anlamına gelir. Soru işareti, sorgu metniyle değiştirilir. Eğer öneri sorgularını bu şekilde aldığınızı ve sorguya joker karakterler eklemeniz gerektiğinde selectionArgs parametresine metin eklemek veya ön eki eklemek bu değer tırnak içine alınır ve soru işaretinin yerine eklenir.

Yukarıdaki örnekte yer alan başka bir özellik de android:searchSuggestIntentAction, amaç işlemini tanımlar gönderilir. Bu konu tartışılıyor Beyan önerileri bölümüne bakın.

Öneri tablosu oluşturma

Sisteme önerileri Cursor ile döndürdüğünüzde sistemi her satırda belirli sütunlar olmasını bekler. Mağazanızın cihazdaki bir SQLite veritabanında, web üzerindeki bir veritabanında bulunan öneri verileriniz cihazdaki ya da web'deki başka bir biçimde olması durumunda, önerileri satır Cursor ile sunun.

Sistem birkaç sütunu anlar, ancak bunlardan yalnızca ikisi gereklidir:

_ID
Her öneri için benzersiz bir tam sayı satır kimliği. Sistem bunu gerektirir önerileri ListView
SUGGEST_COLUMN_TEXT_1
Öneri olarak sunulan dize.

Aşağıdaki sütunların tümü isteğe bağlıdır. Bunların çoğu bu bölümde bulabilirsiniz.

SUGGEST_COLUMN_TEXT_2
Dize Cursor metriğiniz bu sütunu içeriyorsa öneriler iki satırlık biçimde sunulur. Bu sütundaki dize birincil önerinin altında ikinci, daha küçük bir metin satırı olarak görüntülenir metin. İkincil metin olmadığını belirtmek için boş veya değer atanmamış olabilir.
SUGGEST_COLUMN_ICON_1
Çekilebilir bir kaynak, içerik veya dosya URI dizesidir. Eğer Cursor bu sütunu içeriyor ve tüm öneriler sağlanmış bir simge ve metin biçiminde, diğer tarafta ise çekilebilir bir simge bulunuyor. Bu bu satırda simge olmadığını belirtmek için boş veya sıfır olabilir.
SUGGEST_COLUMN_ICON_2
Çekilebilir bir kaynak, içerik veya dosya URI dizesidir. Eğer Cursor bu sütunu içeriyor ve tüm öneriler sağlanmış sağ tarafta simge içeren bir simge artı metin biçiminde. Bu özellik, bu satırda simge olmadığını belirtmek için null veya sıfır değerini kullanın.
SUGGEST_COLUMN_INTENT_ACTION
Amaç işlemi dizesi. Bu sütun mevcutsa ve satır için burada tanımlanan işlem, önerinin isteyebilirsiniz. Öğe sağlanmamışsa işlem, Aranabilir öğelerinizdeki android:searchSuggestIntentAction alanı yapılandırma. İşleminiz tüm öneriler için aynıysa daha fazla işlemi belirtmek için android:searchSuggestIntentAction ve bu sütunu atlayın.
SUGGEST_COLUMN_INTENT_DATA
Veri URI'si dizesi. Bu sütun mevcutsa ve belirtilen satırında, bu veriler önerinin amacını oluştururken kullanılır. Öğe sağlanmazsa veriler web sitesinden alınmıştır. Aranabilir öğelerinizdeki android:searchSuggestIntentData alanı yapılandırma. İki kaynak da sağlanmazsa niyetin veri alanı null. Verileriniz tüm öneriler için aynıysa veya sabit parça ve belirli bir kimlik kullanıldığında, bunu belirtmek daha verimli olur. android:searchSuggestIntentData kullanın ve bunu atlayın sütununa girin.
SUGGEST_COLUMN_INTENT_DATA_ID
URI yolu dizesi. Bu sütun mevcutsa ve verilen satır ve ardından "/" ve bu değer, amaçtaki veri alanına eklenir. Bunu yalnızca Aranabilir öğelerde android:searchSuggestIntentData özelliği yapılandırması uygun bir temel dizeye zaten ayarlanmış.
SUGGEST_COLUMN_INTENT_EXTRA_DATA
Rastgele veriler. Bu sütun mevcutsa ve belirli bir satırda değer içeriyorsa bunlar, önerinin amacını oluştururken kullanılan ekstra verilerdir. Sağlanmazsa niyetin ek veri alanı boş olur. Bu sütun, Öneriler, intent'in EXTRA_DATA_KEY. tuşuna basın.
SUGGEST_COLUMN_QUERY
Bu sütun mevcutsa ve bu öğe belirtilen satırda yer alıyorsa önerinin sorgusunu oluştururken kullanılan veriler, satın almada QUERY tuşuna basın. Öneri işlemi ACTION_SEARCH ise zorunludur. yoksa isteğe bağlıdır.
SUGGEST_COLUMN_SHORTCUT_ID
Yalnızca Hızlı Arama Kutusu için öneriler sağlanırken kullanılır. Bu sütun bir arama önerisinin kısayol olarak depolanması gerekip gerekmediğini ve olup olmaması gerektiğidir. Kısayollar genellikle kullanıcı Hızlı Arama Kutusu'ndaki bir öneriye dokunur. Eksikse sonuç bir kısayol kullanabilirsiniz. Ayarlandığı takdirde SUGGEST_NEVER_MAKE_SHORTCUT, sonuç kısayol olarak depolanmaz. Aksi takdirde, kısayol kimliği şunun için kullanılır: daha fazla bilgi edinmek için SUGGEST_URI_PATH_SHORTCUT
SUGGEST_COLUMN_SPINNER_WHILE_REFRESHING
Yalnızca Hızlı Arama Kutusu için öneriler sağlanırken kullanılır. Bu sütun simgesi yerine bir döner simgenin gösterilmesi gerektiğini belirtir Bu önerinin kısayolu şuyken SUGGEST_COLUMN_ICON_2 hızlı bir şekilde ekleyebilirsiniz.

Bu sütunların çoğu, aşağıdaki bölümlerde daha ayrıntılı olarak ele alınmaktadır.

Önerilerde bulunma isteğini beyan etme

Kullanıcı altında görüntülenen listeden bir öneri seçtiğinde veya widget'ı isterseniz sistem, adresinize özel bir Intent gönderir arama yapılabilir etkinlik. Amaca yönelik işlemi ve verileri tanımlamanız gerekir.

Amaç işlemini tanımlayın

Özel öneriler için en yaygın intent işlemi ACTION_VIEW; bir öğeyi açmak istediğinizde Örneğin, bir kelimenin tanımı, kişinin iletişim bilgileri veya web sayfası gibi. Ancak intent işlemi başka herhangi bir işlem olabilir ve her biri için farklı olabilir. öneririz.

Tüm önerilerin aynı intent işlemini kullanmasını isteyip istemediğinize bağlı olarak, işlemi iki şekilde tanımlayabilirsiniz:

  • Şunun android:searchSuggestIntentAction özelliğini kullanın: tüm önerilerde işlemi tanımlamak üzere kullanabileceğiniz bir yapılandırma dosyasıdır. aşağıdaki örnekte gösterilmektedir:
    <?xml version="1.0" encoding="utf-8"?>
    <searchable xmlns:android="http://schemas.android.com/apk/res/android"
        android:label="@string/app_label"
        android:hint="@string/search_hint"
        android:searchSuggestAuthority="com.example.MyCustomSuggestionProvider"
        android:searchSuggestIntentAction="android.intent.action.VIEW" >
    </searchable>
    
  • Şunu tanımlamak için SUGGEST_COLUMN_INTENT_ACTION sütununu kullanın: işlemi nasıl yapacağınızı belirleyin. Bunu yapmak için Öneriler tablonuza SUGGEST_COLUMN_INTENT_ACTION sütun ekleyin ve her öneri için kullanılacak eyleme (örneğin, "android.intent.action.VIEW".

Bu iki tekniği de birleştirebilirsiniz. Örneğin, android:searchSuggestIntentAction özelliği varsayılan olarak tüm önerilerle kullanılır, ardından bazı öneriler için bu işlemi geçersiz farklı bir işlem beyan ederek SUGGEST_COLUMN_INTENT_ACTION sütunu. Bir değer eklemezseniz değeri: SUGGEST_COLUMN_INTENT_ACTION sütununda, android:searchSuggestIntentAction özelliğinde sunulan değer: kullanılır.

Amaç verilerini bildir

Kullanıcı bir öneri seçtiğinde, aranabilir etkinliğiniz bir önceki slaytta belirtildiği gibi, tanımladığınız işlemle bölümünü içerir, ama amacınız ayrıca etkinliğinizin yardımcı olur. Özellikle, veri benzersiz olmalıdır her öneri için SQLite tablonuzdaki önerinin satır kimliği gibi bir satır kimliği belirtin. Niyet alındığında, ekli verileri getData(). veya getDataString().

Amaca dahil edilen verileri iki şekilde tanımlayabilirsiniz:

  • Projedeki her öneri için SUGGEST_COLUMN_INTENT_DATA sütununa girin.

    Önerilerde her niyet için gerekli tüm veri bilgilerini sağlayın SUGGEST_COLUMN_INTENT_DATA sütununu ekleyerek ve daha sonra her satır için benzersiz verilerle dolduruyorum. Bu sütundaki veriler işareti, tam olarak bu sütunda tanımladığınız şekilde amaca eklenir. Şunları yapabilirsiniz: daha sonra getData() ile alın veya getDataString().

  • Bir veri URI'sini iki parçaya bölün: tüm öneriler için ortak bölüm ve her öneriye özel bölümü ekleyin. Bu kısımları Aranabilir anahtarın android:searchSuggestintentData özelliği ve SUGGEST_COLUMN_INTENT_DATA_ID sütununu içeren üç öneri tablosunu görürsünüz.

    Aşağıdaki örnekte, tüm öneriler için ortak Aranabilir anahtar kelimenizin android:searchSuggestIntentData özelliği yapılandırma:

      <?xml version="1.0" encoding="utf-8"?>
      <searchable xmlns:android="http://schemas.android.com/apk/res/android"
          android:label="@string/app_label"
          android:hint="@string/search_hint"
          android:searchSuggestAuthority="com.example.MyCustomSuggestionProvider"
          android:searchSuggestIntentAction="android.intent.action.VIEW"
          android:searchSuggestIntentData="content://com.example/datatable" >
      </searchable>
      

    Her önerinin nihai yolunu (benzersiz kısmı) önerilerinizin SUGGEST_COLUMN_INTENT_DATA_ID sütunu tablosunu oluşturalım. Kullanıcı bir öneri seçtiğinde sistem, dizeyi android:searchSuggestIntentData, eğik çizgi (/) ekler, ve ardından, Eksiksiz bir içerik oluşturmak için SUGGEST_COLUMN_INTENT_DATA_ID sütunu URI. Daha sonra Uri öğesini şuradan alabilirsiniz: getData().

Daha fazla veri ekleyin

Niyetinizle daha fazla bilgi ifade etmeniz gerekiyorsa başka bir bilgi ekleyebilirsiniz. SUGGEST_COLUMN_INTENT_EXTRA_DATA gibi bir sütun oluşturabilirsiniz. öneriyle ilgili ek bilgileri saklamanızı öneririz. Bu sütuna kaydedilen veriler işareti, intent'in ekstra paketinin EXTRA_DATA_KEY içine yerleştirilir.

Amacı yerine getirin

Özel amaçlarla özel arama önerileri sağladıktan sonra, kullanıcı bir anahtar kelime seçtiğinde bu amaçları ele almak için aranabilir öneririz. Bu, ACTION_SEARCH niyetini gösterir. Medya etkinliği ölçüm araçlarının amaçlarınızı belirlerken onCreate(). geri arama:

Kotlin

when(intent.action) {
    Intent.ACTION_SEARCH -> {
        // Handle the normal search query case.
        intent.getStringExtra(SearchManager.QUERY)?.also { query ->
            doSearch(query)
        }
    }
    Intent.ACTION_VIEW -> {
        // Handle a suggestions click, because the suggestions all use ACTION_VIEW.
        showResult(intent.data)
    }
}

Java

Intent intent = getIntent();
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
    // Handle the normal search query case.
    String query = intent.getStringExtra(SearchManager.QUERY);
    doSearch(query);
} else if (Intent.ACTION_VIEW.equals(intent.getAction())) {
    // Handle a suggestions click, because the suggestions all use ACTION_VIEW.
    Uri data = intent.getData();
    showResult(data);
}

Bu örnekte, intent işlemi ACTION_VIEW ve veriler içerir, önerilen öğeyi işaret eden, android:searchSuggestIntentData dizesi ve SUGGEST_COLUMN_INTENT_DATA_ID sütunu. Ardından URI, içerik sağlayıcıyı sorgulayan yerel showResult() yöntemi öğesi.

Sorgu metnini yeniden yazma

Varsayılan olarak kullanıcı, iztopu veya D-pad gibi yön denetimlerinde sorgu metni güncelleyin. Ancak, kullanıcının sorgu metnini göründüğü gibi geçici olarak yeniden yazabilirsiniz yazın. Bu şekilde önerilen sorguyu görür ve arama kutusunu seçip dağıtmadan önce bir arama sorgusu yürütür.

Sorgu metnini aşağıdaki yöntemlerle yeniden yazabilirsiniz:

  • android:searchMode özelliğini arama yapılabilir "queryRewriteFromText" değerine sahip yapılandırma dosyası oluşturabilirsiniz. Burada önerinin SUGGEST_COLUMN_TEXT_1 içeriğindeki sütunu, sorgu metnini yeniden yazmak için kullanılır.
  • android:searchMode özelliğini aranabilir içeriğinize ekleyin\ "queryRewriteFromData" değerine sahip yapılandırma dosyası oluşturabilirsiniz. Burada önerinin içeriği, Sorguyu yeniden yazmak için SUGGEST_COLUMN_INTENT_DATA sütunu kullanılır metin. Bunu yalnızca kullanıcı tarafından görülebilen HTTP URL'leri gibi. Yeniden yazmak için dahili URI şemalarını kullanmayın bu şekilde düşünebilirsiniz.
  • SUGGEST_COLUMN_QUERY sütununa girin. Bu sütunu varsa ve mevcut öneri için bir değer içeriyorsa sorgu metnini yeniden yazmak ve önceki hakkında bilgi edindiniz.

Arama önerilerini Hızlı Arama Kutusu'nda göster

Uygulamanızı özel arama önerileri sunacak şekilde yapılandırdıktan sonra, Hızlı Arama Kutusu'ndaki kullanılabilir araçları, URL'leri değiştirmek kadar kolay dahil edilecek Şu değere sahip android:includeInGlobalSearch: "true".

Ek çalışma gerektiren tek senaryo, içeriğinizin yalnızca sağlayıcı, okuma izni istiyor. Bu durumda, buraya bir Sağlayıcının Quick'a izin vermesi için <path-permission> öğesi Aşağıda gösterildiği gibi, içerik sağlayıcınıza Arama Kutusu okuma erişimi örnek:

<provider android:name="MySuggestionProvider"
          android:authorities="com.example.MyCustomSuggestionProvider"
          android:readPermission="com.example.provider.READ_MY_DATA"
          android:writePermission="com.example.provider.WRITE_MY_DATA">
  <path-permission android:pathPrefix="/search_suggest_query"
                   android:readPermission="android.permission.GLOBAL_SEARCH" />
</provider>

Bu örnekte sağlayıcı, içeriğe okuma ve yazma erişimini kısıtlar. <path-permission> öğesi, kısıtlamayı "/search_suggest_query" içindeki içeriğe okuma erişimi verme yol önekini kullanırsanız "android.permission.GLOBAL_SEARCH" izni gerekir. Bu, Çabuk Arama Kutusu'na, içeriğinizi sorgulayabilmesi için erişim izni verir sağlayıcı var.

İçerik sağlayıcınız okuma izinlerini zorunlu kılmıyorsa Hızlı Arama Box, varsayılan olarak bu metni okur.

Cihazda önerileri etkinleştirme

Varsayılan olarak uygulamalar, Hızlı Arama Kutusu'nda öneri sağlamak üzere etkinleştirilmez. yapılandırmanın ne kadar önemli olduğu. Eklenip eklenmeyeceğini kullanıcı seçer Aranabilir items: Ayarlar > Arama ve öğesini seçebilirsiniz.

Hızlı Arama Kutusu tarafından kullanılabilen her uygulamanın Aranabilir öğeler ayarlar sayfası. Giriş, uygulamanın adını içeriyor ve hangi içeriğin uygulamadan aranabileceğine ve bunların Hızlı Arama Kutusu'nda öneriler için kullanılabilir. Açıklama metnini tanımlamak için aranabilir uygulamanız için android:searchSettingsDescription ekleyin özelliğini kullanabilirsiniz. Bu özellik, aşağıda gösterildiği gibi, örnek:

<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="@string/app_label"
    android:hint="@string/search_hint"
    android:searchSuggestAuthority="com.example.MyCustomSuggestionProvider"
    android:searchSuggestIntentAction="android.intent.action.VIEW"
    android:includeInGlobalSearch="true"
    android:searchSettingsDescription="@string/search_description" >
</searchable>

android:searchSettingsDescription dizesini kısa ve öz tutun mümkün olduğunca ekleyin ve aranabilir olan içeriği belirtin. Örneğin, "Sanatçılar, Albümler ve parçalar" müzik uygulaması veya "Kayıtlı notlar" not defteri uygulaması için. Bu açıklamanın sağlanması, kullanıcının ne tür reklamlar vereceğini bilmesi açısından önemlidir. sunulur. Aşağıdaki durumlarda bu özelliği her zaman ekleyin: android:includeInGlobalSearch doğru.

Arama önerilerini etkinleştirmek için kullanıcının ayarlar menüsünü ziyaret etmesi gerektiğinden Arama, uygulamanızın önemli bir yönüyse bunu kullanıcılarınıza iletebilirsiniz. Örneğin, bir bildirimi ilk seferde, Kullanıcı, Quick için arama önerilerinin nasıl etkinleştirileceğini açıklayan uygulamayı başlatır. Arama Kutusu.

Hızlı Arama Kutusu öneri kısayollarını yönetme

Kullanıcının Çabuk Arama Kutusu'ndan seçtiği öneriler otomatik olarak nasıl yapıldığını da göreceğiz. Bunlar, sistemin ihtiyaç duymadan öneriye hızlıca erişebilmesini sağlamak için içerik sağlayıcınıza yeniden sorgu gönderin.

Bu ayar, Hızlı Arama tarafından alınan tüm öneriler için varsayılan olarak etkindir öneriniz olabilir, ancak öneri verileriniz zaman içinde değişirse, kısayollar yenilenecek. Örneğin, önerileriniz dinamik bir diğer istek üzerine de önerilebilir, ardından önerinin kısayolların yenilenmesi gerektiğini unutmayın. Bunu yapmak için SUGGEST_COLUMN_SHORTCUT_ID ekleyin. Tekliflerinizi otomatikleştirmek ve optimize etmek için bu sütunu kullanarak şu yöntemleri kullanabilirsiniz:

  • Yeni bir arama deneyimi için Hızlı Arama Kutusu'nun içerik sağlayıcınızı yeniden sorgulamasını sağlayın yeni bir sürüm oluşturun.

    SUGGEST_COLUMN_SHORTCUT_ID sütununa şunun için bir değer girin: yeni bir sürüm için yeniden sorgulanması gereken öneri gösterilir. Kısayol, en önemli verileri kullanarak sorgu geri döndürene kadar kullanılabilir hale gelir. Bu noktada öneri yeni bilgilerle yenilenir. Yenileme sorgusu: içerik sağlayıcınıza şu URI yoluyla gönderilir: SUGGEST_URI_PATH_SHORTCUT - yerine SUGGEST_URI_PATH_QUERY.

    Döndürdüğünüz Cursor öğesinin orijinal öneriyle aynı sütunları seçebilir veya boş kısayol artık geçerli değildir; bu durumda, öneri kaybolur Kısayol kaldırılır.

    Öneriler, yenileme işlemi daha uzun sürebilen veriler (ör. ağ tabanlı yenileme kullanıyorsanız, SUGGEST_COLUMN_SPINNER_WHILE_REFRESHING sütunu ve tüm etkinliklerin ilerleme durumunu gösteren döner simgeyi göstermek için, yenileme tamamlanana kadar sağ taraftaki simgeyi basılı tutun. Doğru dışındaki herhangi bir değer ilerleme durumu döner simgesi gösterilmez.

  • Önerinin bir kısayola kopyalanmasını hiç engelleyebilirsiniz.

    SUGGEST_NEVER_MAKE_SHORTCUT SUGGEST_COLUMN_SHORTCUT_ID sütunu. Bu durumda, öneriler hiçbir zaman kısayola kopyalanmaz. Bu yalnızca önceden kopyalanan önerinin görünmesini kesinlikle istemez. Şu durumda: sütun için normal bir değer sağlayın, ardından öneri kısayolu yalnızca yenileme sorgusu geri gelene kadar görünür.

  • Varsayılan kısayol davranışının geçerli olmasına izin verin.

    Her biri için SUGGEST_COLUMN_SHORTCUT_ID alanını boş bırakın olarak kaydedilebilecek ve değişmeyen bir öneri olarak kısayolunu görürsünüz.

Önerilerinizden hiçbiri değişmezse, SUGGEST_COLUMN_SHORTCUT_ID sütunu.

Çabuk Arama Kutusu öneri sıralaması hakkında

Uygulamanızın arama önerilerini Hızlı Arama Kutusu'nda kullanılabilir hale getirdikten sonra Çabuk Arama Kutusu sıralaması, önerilerin arama sonuçları sayfasında nasıl belirli bir sorgu için geçerli olabilir. Bu, kaç tane başka uygulamanın arama sonuçlarını gösterir ve kullanıcının sonuçlarınızı seçme sıklığına Google Analytics 4'te tarama yapar. Önerilerinizin nasıl olacağına dair herhangi bir garanti yoktur durumunu veya uygulamanızın önerilerinin belirli bir sorgu için gösterilip gösterilmediğini belirleyebilirsiniz. İçinde kaliteli sonuçlar sunmak, uygulamanızın Google tarafından Öneriler belirgin bir konumda sunulur ve Düşük kaliteli önerilerin sıralaması daha düşük olur veya hiç gösterilmez.