建立搜尋介面

準備好在應用程式中新增搜尋功能時,Android 會運用顯示在活動視窗頂端的搜尋對話方塊,或是可在版面配置中插入的搜尋小工具協助您實作使用者介面。搜尋對話方塊和小工具都能將使用者的搜尋查詢傳送至應用程式中的特定活動。這樣一來,使用者就能透過任何有搜尋對話方塊或小工具的活動啟動搜尋,而系統會啟動適當的活動,以執行搜尋並呈現結果。

搜尋對話方塊和小工具可用的其他功能包括:

  • 語音搜尋
  • 根據近期查詢內容提供的搜尋建議
  • 符合應用程式資料中實際結果的搜尋建議

本文說明如何設定應用程式,以使用搜尋對話方塊或搜尋小工具提供搜尋介面,以協助 Android 系統提供搜尋查詢。

相關資源:

基本概念

開始之前,請先決定要使用搜尋對話方塊還是搜尋小工具實作搜尋介面。兩者提供相同的搜尋功能,但運作方式略有不同:

  • 「搜尋對話方塊」是由 Android 系統控制的 UI 元件。使用者啟用時,搜尋對話方塊會顯示在活動頂端。

    Android 系統會控制搜尋對話方塊中的所有事件。使用者提交查詢時,系統會將查詢傳送至您指定處理搜尋的活動。對話方塊也能在使用者輸入內容時提供搜尋建議。

  • 搜尋小工具SearchView 的例項,可以放在版面配置中的任何位置。根據預設,搜尋小工具的運作方式與標準 EditText 小工具類似,但不會執行任何操作,但您可以進行設定,讓 Android 系統處理所有輸入事件、將查詢傳送至適當的活動,並提供搜尋建議,就和搜尋對話方塊一樣。

當使用者透過搜尋對話方塊或搜尋小工具執行搜尋時,系統會建立 Intent,並將使用者查詢內容儲存在其中。接著,系統會啟動您宣告的活動,以便處理搜尋 (「可搜尋活動」) 並提供意圖。如要為應用程式設定這類輔助搜尋,您必須符合以下條件:

  • A 搜尋設定
    用於設置搜尋對話方塊或小工具的 XML 檔案。當中包含語音搜尋、搜尋建議和搜尋框的提示文字等設定。
  • 可供搜尋的活動
    接收搜尋查詢、搜尋資料並顯示搜尋結果的 Activity
  • 搜尋介面,由下列其中一項條件提供:
    • 搜尋對話方塊
      搜尋對話方塊預設為隱藏。當使用者輕觸「搜尋」按鈕時呼叫 onSearchRequested() 時,它會顯示在螢幕頂端。
    • SearchView 小工具
      您可以使用搜尋小工具,將搜尋框放在活動的任何位置,包括應用程式列中的動作檢視畫面。

本文件的其餘部分將說明如何建立搜尋設定和可供搜尋的活動,以及如何使用搜尋對話方塊或搜尋小工具實作搜尋介面。

建立可供搜尋的設定

首先,您需要名為「搜尋設定」的 XML 檔案。它會設定搜尋對話方塊或小工具的特定 UI 方面,並定義建議和語音搜尋等功能的運作方式。這個檔案通常命名為 searchable.xml,且必須儲存在 res/xml/ 專案目錄中。

搜尋設定檔必須包含 <searchable> 元素做為根節點,並指定一或多個屬性,如以下範例所示:

<?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" >
</searchable>

android:label 是唯一的必要屬性,這會指向字串資源,必須是應用程式名稱。您必須先啟用快速搜尋框的搜尋建議,這個標籤才會顯示在系統設定中的可搜尋項目清單中。

雖然這不是必要步驟,但建議您一律加入 android:hint 屬性,這樣在使用者輸入查詢前,就能在搜尋框中輸入提示字串。提示很重要,因為這可以讓使用者瞭解 他們可以搜尋的內容

<searchable> 元素可接受其他幾項屬性。不過,您無須新增搜尋建議語音搜尋等功能,即可採用大部分的屬性。如要進一步瞭解搜尋設定檔,請參閱搜尋設定參考說明文件。

建立可供搜尋的活動

可供搜尋的活動是應用程式中的 Activity,可根據查詢字串執行搜尋,並顯示搜尋結果。

當使用者在搜尋對話方塊或小工具中執行搜尋時,系統會啟動您的可搜尋活動,並透過 ACTION_SEARCH 動作在 Intent 中傳送搜尋查詢。可供搜尋的活動會從意圖的 QUERY 額外項目擷取查詢,然後搜尋您的資料並顯示結果。

由於您可以將搜尋對話方塊或小工具加到應用程式的任何其他活動,因此系統必須知道哪個活動是可供搜尋的活動,才能正確提供搜尋查詢。因此,請先在 Android 資訊清單檔案中宣告可供搜尋的活動。

宣告可搜尋的活動

如果您尚未建立 Activity,請建立可以執行搜尋並呈現結果的 Activity。您不必實作搜尋功能,只要建立可在資訊清單中宣告的活動即可。在資訊清單的 <activity> 元素中執行以下操作:

  1. 宣告活動,以在 <intent-filter> 元素中接受 ACTION_SEARCH 意圖。
  2. 指定要在 <meta-data> 元素中使用的搜尋設定。

例如:

<application ... >
    <activity android:name=".SearchableActivity" >
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>
        <meta-data android:name="android.app.searchable"
                   android:resource="@xml/searchable"/>
    </activity>
    ...
</application>

<meta-data> 元素必須包含值為 "android.app.searchable"android:name 屬性,以及 android:resource 屬性和可搜尋設定檔的參照。在上述範例中,這裡參照 res/xml/searchable.xml 檔案。

執行搜尋

在資訊清單中宣告可搜尋活動後,請按照下列步驟在可搜尋的活動中執行搜尋:

  1. 接收查詢
  2. 搜尋資料
  3. 呈現結果

接收查詢

使用者透過搜尋對話方塊或小工具執行搜尋時,系統會啟動可搜尋的活動,並傳送 ACTION_SEARCH 意圖。此意圖會在 QUERY 字串額外項目中存放搜尋查詢。在活動開始時檢查這個意圖並擷取字串。舉例來說,以下說明如何在可搜尋的活動開始時取得搜尋查詢:

Kotlin

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.search)

    // Verify the action and get the query.
    if (Intent.ACTION_SEARCH == intent.action) {
        intent.getStringExtra(SearchManager.QUERY)?.also { query ->
            doMySearch(query)
        }
    }
}

Java

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.search);

    // Get the intent, verify the action, and get the query.
    Intent intent = getIntent();
    if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
      String query = intent.getStringExtra(SearchManager.QUERY);
      doMySearch(query);
    }
}

QUERY 字串一律會包含在 ACTION_SEARCH 意圖中。在上述範例中,系統會擷取查詢,並傳送至執行實際搜尋作業的本機 doMySearch() 方法。

搜尋資料

您的應用程式儲存及搜尋資料的程序並不相同。您可以透過多種方式儲存及搜尋資料,而本文件並不會示範操作方式。請思考您如何依需求和資料格式儲存及搜尋資料。以下列舉幾項可提出申請的訣竅:

  • 如果資料儲存在裝置上的 SQLite 資料庫中,使用 FTS3 而非 LIKE 查詢執行全文搜尋,可以提供更可靠的文字資料搜尋功能,並大幅加快結果產生速度。如要瞭解 FTS3 的 FTS3 相關資訊,請參閱 sqlite.org;如要瞭解 Android 中的 SQLite,請參閱 SQLiteDatabase 類別。
  • 如果資料是儲存在網路上,使用者的數據連線可能會限制你感受到的搜尋效能。建議您在搜尋傳回結果前顯示進度指標。如要瞭解網路 API 的參考資料,請參閱 android.netProgressBar,瞭解如何顯示進度指標。

呈現結果

無論您的資料存放於何處,或是您以何種方式搜尋資料,我們建議您使用 Adapter 將搜尋結果傳回至可搜尋的活動。如此一來,您就可以在 RecyclerView 中呈現所有搜尋結果。如果您的資料來自 SQLite 資料庫查詢,您可以使用 CursorAdapter,將結果套用至 RecyclerView。如果您的資料採用其他格式,您可以建立 BaseAdapter 的副檔名。

Adapter 會將一組資料中的每個項目繫結至 View 物件。當 Adapter 套用至 RecyclerView 時,系統會將每個資料做為個別檢視畫面插入至清單中。Adapter 只是介面,因此需要實作 CursorAdapter 等實作,以便從 Cursor 繫結資料。如果任何現有的實作方式都不適用於您的資料,您可以從 BaseAdapter 自行實作。

使用搜尋對話方塊

搜尋對話方塊在畫面頂端提供浮動搜尋框,應用程式圖示位於左方。搜尋對話方塊可在使用者輸入內容時提供搜尋建議。當使用者執行搜尋時,系統會將搜尋查詢傳送至可搜尋的活動,以便執行搜尋。

根據預設,搜尋對話方塊一律會隱藏,直到使用者啟用為止。應用程式可呼叫 onSearchRequested() 以啟用搜尋對話方塊。但是,您必須先為活動啟用搜尋對話方塊,這個方法才能運作。

如要啟用搜尋對話方塊,請指示系統必須接收搜尋對話方塊的搜尋查詢。舉例來說,在上述有關建立可搜尋活動的章節中,建立了名為 SearchableActivity 的可搜尋活動。如要讓獨立的活動 (例如名為 OtherActivity) 顯示搜尋對話方塊並向 SearchableActivity 提供搜尋,請在資訊清單中宣告 SearchableActivity 是供 OtherActivity 中搜尋對話方塊的可供搜尋活動。

如要為活動的搜尋對話方塊宣告可供搜尋的活動,請在個別活動的 <activity> 元素內新增 <meta-data> 元素。<meta-data> 元素必須包含 android:value 屬性,用於指定可搜尋活動的類別名稱,以及將 android:name 屬性的屬性值設為 "android.app.default_searchable"

舉例來說,以下是可搜尋的活動 SearchableActivity 和其他活動 OtherActivity 的宣告 (使用 SearchableActivity 透過其搜尋對話方塊執行搜尋):

<application ... >
    <!-- This is the searchable activity; it performs searches. -->
    <activity android:name=".SearchableActivity" >
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>
        <meta-data android:name="android.app.searchable"
                   android:resource="@xml/searchable"/>
    </activity>

    <!-- This activity enables the search dialog to initiate searches
         in the SearchableActivity. -->
    <activity android:name=".OtherActivity" ... >
        <!-- Enable the search dialog to send searches to SearchableActivity. -->
        <meta-data android:name="android.app.default_searchable"
                   android:value=".SearchableActivity" />
    </activity>
    ...
</application>

由於 OtherActivity 現在包含 <meta-data> 元素,可宣告要用於搜尋的可搜尋活動,因此活動會啟用搜尋對話方塊。雖然使用者在這個活動中,但 onSearchRequested() 方法會啟動搜尋對話方塊。當使用者執行搜尋時,系統會啟動 SearchableActivity 並向 ACTION_SEARCH 意圖提供。

如果希望應用程式中的每個活動都提供搜尋對話方塊,請插入上述 <meta-data> 元素做為 <application> 元素的子項,而非每個 <activity>。如此一來,每個活動都會繼承值並提供搜尋對話方塊,並將搜尋傳送至相同的可搜尋活動。如果您有多個可搜尋活動,可以在個別活動中放置不同的 <meta-data> 宣告,覆寫預設的可搜尋活動。

啟用活動的搜尋對話方塊後,應用程式就可以開始執行搜尋。

叫用搜尋對話方塊

雖然部分裝置會提供專屬的搜尋按鈕,但按鈕的行為可能因裝置而異,且許多裝置根本不會提供搜尋按鈕。因此,使用搜尋對話方塊時,您必須在 UI 中提供搜尋按鈕,以便透過呼叫 onSearchRequested() 啟用搜尋對話方塊。

例如,在選項選單或呼叫 onSearchRequested() 的 UI 版面配置中新增搜尋按鈕。

您也可以啟用「輸入搜尋」功能,在使用者開始在鍵盤上輸入內容時啟用搜尋對話方塊。按鍵動作會插入搜尋對話方塊中。您可以在活動的 onCreate() 方法期間呼叫 setDefaultKeyModeDEFAULT_KEYS_SEARCH_LOCAL,以啟用活動中的類型搜尋。

搜尋對話方塊對活動生命週期的影響

搜尋對話方塊是浮動在螢幕頂端的 Dialog。這不會導致活動堆疊發生任何變更,因此當顯示搜尋對話方塊時,系統並不會呼叫生命週期方法 (例如 onPause())。活動會遺失輸入焦點,因為輸入焦點已分配給搜尋對話方塊。

如果您想在啟用搜尋對話方塊時收到通知,請覆寫 onSearchRequested() 方法。當系統呼叫此方法時,表示活動失去搜尋對話方塊的輸入焦點,因此您可以對事件執行任何適當的作業,例如暫停遊戲。除非您傳送搜尋結構定義資料 (請參閱本文另一節的說明),否則請呼叫父類別實作方式:

Kotlin

override fun onSearchRequested(): Boolean {
    pauseSomeStuff()
    return super.onSearchRequested()
}

Java

@Override
public boolean onSearchRequested() {
    pauseSomeStuff();
    return super.onSearchRequested();
}

如果使用者輕觸「返回」按鈕取消搜尋,搜尋對話方塊會關閉,活動也會重新取得輸入焦點。您可以使用 setOnDismissListener() 和/或 setOnCancelListener() 註冊,以便在搜尋對話方塊關閉時收到通知。您只需要註冊 OnDismissListener,因為每次搜尋對話方塊關閉時,系統都會呼叫此函式。OnCancelListener 僅適用於使用者明確退出搜尋對話方塊的事件,因此在執行搜尋時不會呼叫該事件。執行搜尋時,搜尋對話方塊會自動消失。

如果目前的活動不是可供搜尋的活動,當使用者執行搜尋時,就會觸發一般活動生命週期事件,而目前的活動會收到 onPause(),詳情請參閱「活動簡介」。不過,如果目前是可供搜尋的活動,則會發生下列其中一種情況:

  • 根據預設,可供搜尋的活動接收 ACTION_SEARCH 意圖會呼叫 onCreate(),並將新的活動例項移至活動堆疊頂端。現在活動堆疊中有兩個可供搜尋的活動,因此輕觸「返回」按鈕可返回上一個可搜尋活動的執行個體,而不是結束可搜尋的活動。
  • 如果您將 android:launchMode 設為 "singleTop",則可供搜尋的活動會透過呼叫 onNewIntent(Intent) 接收 ACTION_SEARCH 意圖,並傳遞新的 ACTION_SEARCH 意圖。例如,當可供搜尋的活動啟動模式為 "singleTop" 時,您可以採用下列做法處理這種情況:

    Kotlin

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.search)
        handleIntent(intent)
    }
    
    override fun onNewIntent(intent: Intent) {
        super.onNewIntent(intent)
        setIntent(intent)
        handleIntent(intent)
    }
    
    private fun handleIntent(intent: Intent) {
        if (Intent.ACTION_SEARCH == intent.action) {
            intent.getStringExtra(SearchManager.QUERY)?.also { query ->
                doMySearch(query)
            }
        }
    }
    

    Java

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.search);
        handleIntent(getIntent());
    }
    
    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        setIntent(intent);
        handleIntent(intent);
    }
    
    private void handleIntent(Intent intent) {
        if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
          String query = intent.getStringExtra(SearchManager.QUERY);
          doMySearch(query);
        }
    }
    

    與「執行搜尋」一節中的程式碼範例相比,處理搜尋意圖的所有程式碼現在都位於 handleIntent() 方法中,因此 onCreate()onNewIntent() 都能執行。

    系統呼叫 onNewIntent(Intent) 時,不會重新啟動活動,因此 getIntent() 方法會傳回使用 onCreate() 收到的相同意圖。因此,您必須在 onNewIntent(Intent) 內呼叫 setIntent(Intent),讓系統在您日後呼叫 getIntent() 時,更新活動儲存的意圖。

第二種情況是使用 "singleTop" 啟動模式,因為搜尋完成後,使用者可能會執行其他搜尋,而且您不希望應用程式為可搜尋活動建立多個執行個體。建議您在應用程式資訊清單中,將可供搜尋的活動設為 "singleTop" 啟動模式,如以下範例所示:

<activity android:name=".SearchableActivity"
          android:launchMode="singleTop" >
    <intent-filter>
        <action android:name="android.intent.action.SEARCH" />
    </intent-filter>
    <meta-data
          android:name="android.app.searchable"
          android:resource="@xml/searchable"/>
  </activity>

傳送搜尋情境資料

在某些情況下,您可以針對各項搜尋在可搜尋活動中的搜尋查詢進行必要的修正。不過,如果您想要根據使用者執行搜尋的活動調整搜尋條件,您可以在系統傳送至可搜尋活動的意圖中提供額外資料。您可以透過 ACTION_SEARCH 意圖隨附的 APP_DATA Bundle 傳遞其他資料。

如要將這類資料傳遞至可搜尋活動,請針對使用者可執行搜尋的活動覆寫 onSearchRequested() 方法,運用其他資料建立 Bundle,並呼叫 startSearch() 以啟用搜尋對話方塊。例如:

Kotlin

override fun onSearchRequested(): Boolean {
    val appData = Bundle().apply {
        putBoolean(JARGON, true)
    }
    startSearch(null, false, appData, false)
    return true
}

Java

@Override
public boolean onSearchRequested() {
     Bundle appData = new Bundle();
     appData.putBoolean(SearchableActivity.JARGON, true);
     startSearch(null, false, appData, false);
     return true;
 }

如果傳回 true,表示您已成功處理這個回呼事件,並呼叫 startSearch() 以啟用搜尋對話方塊。使用者提交查詢後,查詢就會連同新增的資料一併傳送至可供搜尋的活動。您可以從 APP_DATA Bundle 擷取額外資料來修正搜尋,如以下範例所示:

Kotlin

val jargon: Boolean = intent.getBundleExtra(SearchManager.APP_DATA)?.getBoolean(JARGON) ?: false

Java

Bundle appData = getIntent().getBundleExtra(SearchManager.APP_DATA);
if (appData != null) {
    boolean jargon = appData.getBoolean(SearchableActivity.JARGON);
}

使用搜尋小工具

應用程式頂端列搜尋檢視畫面的圖片

圖 1 SearchView 小工具做為應用程式列的動作檢視畫面。

搜尋小工具提供與搜尋對話方塊相同的功能。當使用者執行搜尋時,這項功能會啟動適當的活動,並提供搜尋建議及執行語音搜尋。如果您無法在應用程式列中放置搜尋小工具,可以改為將搜尋小工具放在活動版面配置中。

設定搜尋小工具

建立搜尋設定可搜尋活動後,請呼叫 setSearchableInfo(),並將代表可搜尋設定的 SearchableInfo 物件傳遞給這個函式,為每個 SearchView 啟用輔助搜尋功能。

您可以對 SearchManager 呼叫 getSearchableInfo(),藉此取得 SearchableInfo 的參照。

舉例來說,如果您使用 SearchView 做為應用程式列中的動作檢視畫面,請在 onCreateOptionsMenu() 回呼期間啟用小工具,如以下範例所示:

Kotlin

override fun onCreateOptionsMenu(menu: Menu): Boolean {
    // Inflate the options menu from XML.
    val inflater = menuInflater
    inflater.inflate(R.menu.options_menu, menu)

    // Get the SearchView and set the searchable configuration.
    val searchManager = getSystemService(Context.SEARCH_SERVICE) as SearchManager
    (menu.findItem(R.id.menu_search).actionView as SearchView).apply {
        // Assumes current activity is the searchable activity.
        setSearchableInfo(searchManager.getSearchableInfo(componentName))
        setIconifiedByDefault(false) // Don't iconify the widget. Expand it by default.
    }

    return true
}

Java

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the options menu from XML.
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.options_menu, menu);

    // Get the SearchView and set the searchable configuration.
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
    // Assumes current activity is the searchable activity.
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
    searchView.setIconifiedByDefault(false); // Don't iconify the widget. Expand it by default.

    return true;
}

搜尋小工具現已設定完成,系統會將搜尋查詢傳送至可供搜尋的活動。您也可以啟用搜尋小工具的搜尋建議

如要進一步瞭解應用程式列中的動作檢視畫面,請參閱「使用動作檢視畫面和動作供應程式」。

其他搜尋小工具功能

SearchView 小工具提供幾項您可能會想要的額外功能:

提交按鈕
由於根據預設,由於沒有可提交搜尋查詢的按鈕,因此使用者必須按下鍵盤上的 Return 鍵,才能啟動搜尋。呼叫 setSubmitButtonEnabled(true) 即可新增「提交」按鈕。
搜尋建議的查詢修正
啟用搜尋建議後,您通常會預期使用者會選取建議,但可能也希望修正建議的搜尋查詢。您可以在每個建議旁邊加上按鈕,如此一來,使用者就能呼叫 setQueryRefinementEnabled(true) 將建議插入搜尋框,以便進行修正。
切換搜尋框瀏覽權限
搜尋小工具預設為「圖示」,也就是說,搜尋小工具只會以「放大鏡」圖示表示。當使用者輕觸圖示,此圖示會展開並顯示搜尋框。如上述範例所示,根據預設,呼叫 setIconifiedByDefault(false) 可以顯示搜尋框。您也可以呼叫 setIconified() 來切換搜尋小工具的外觀。

SearchView 類別中的其他 API 可讓您自訂搜尋小工具。不過,大部分只有在您自行處理所有使用者輸入內容時才能使用,而非透過 Android 系統提供搜尋查詢和顯示搜尋建議。

同時使用小工具和對話方塊

如果您將搜尋小工具插入應用程式列做為動作檢視畫面,並透過設定 android:showAsAction="ifRoom" 讓該小工具顯示在應用程式列中 (如果有的話),則搜尋小工具可能不會顯示為動作檢視畫面。而溢位選單中可能會顯示選單項目。舉例來說,應用程式在較小的螢幕上執行時,應用程式列可能沒有足夠空間顯示搜尋小工具與其他操作項目或導覽元素,因此選單項目會改為顯示在溢位選單中。項目放入溢位選單後,其運作方式就如同一般選單項目,不會顯示動作檢視畫面 (即搜尋小工具)。

為了處理這種情況,當使用者從溢位選單中選取搜尋小工具時,用來附加搜尋小工具的選單項目必須啟用搜尋對話方塊。為此,請實作 onOptionsItemSelected() 來處理「搜尋」選單項目,並透過呼叫 onSearchRequested() 開啟搜尋對話方塊。

如要進一步瞭解應用程式列中項目的運作方式和處理方式,請參閱「新增應用程式列」。

新增語音搜尋

您可以將 android:voiceSearchMode 屬性新增至搜尋對話方塊或小工具,藉此為搜尋對話方塊或小工具新增語音搜尋功能。這麼做會新增語音搜尋按鈕,用於啟動語音提示。使用者說出完畢時,轉錄的搜尋查詢就會傳送至可供搜尋的活動。

例如:

<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="@string/search_label"
    android:hint="@string/search_hint"
    android:voiceSearchMode="showVoiceSearchButton|launchRecognizer" >
</searchable>

如要啟用語音搜尋,必須提供 showVoiceSearchButton 值。第二個值 launchRecognizer 會指定語音搜尋按鈕必須啟動「辨識工具」,將轉錄的文字傳回至可搜尋的活動。

您可以提供其他屬性來指定語音搜尋行為,例如預期語言和要傳回的結果數量上限。如要進一步瞭解可用的屬性,請參閱「搜尋設定」參考資料。

新增搜尋建議

搜尋對話方塊和搜尋小工具都能在使用者輸入內容時提供搜尋建議,並藉助 Android 系統的協助。系統會管理建議清單,並在使用者選取建議時處理事件。

您可以提供兩種搜尋建議:

近期查詢搜尋建議
這些建議是使用者先前在應用程式中用於搜尋查詢的字詞。詳情請參閱「新增自訂搜尋建議」。
自訂搜尋建議
這些是您根據資料來源提供的搜尋建議,可協助使用者立即選取想要搜尋的正確拼字或項目。詳情請參閱「新增自訂搜尋建議」一文。