使用 Android 搜尋對話方塊或搜尋小工具時,您可以提供根據應用程式資料建立的自訂搜尋建議。舉例來說,如果您的應用程式是字典,您可以在使用者完成輸入查詢之前,建議與搜尋欄位中輸入的文字相符的字詞。這些建議之所以有價值,是因為能夠有效預測使用者需求,並提供即時存取權。圖 1 顯示含有自訂建議的搜尋對話方塊範例。
提供自訂建議後,您也可以在全系統的快速搜尋框中顯示這些建議,讓使用者在應用程式外存取您的內容。
新增自訂建議前,請先實作 Android 搜尋對話方塊或搜尋小工具,以便在應用程式中進行搜尋。請參閱「建立搜尋介面」和「內容供應器」。
基本概念

圖 1. 螢幕截圖:搜尋對話方塊,顯示自訂搜尋建議。
使用者選取自訂建議時,系統會將 Intent
傳送至可搜尋的活動。一般搜尋查詢會傳送含有 ACTION_SEARCH
動作的意圖,但您可以改為定義自訂建議,使用 ACTION_VIEW
或任何其他意圖動作,並加入與所選建議相關的資料。以字典為例,使用者選取建議時,應用程式可以立即開啟該字詞的定義,不必在字典中搜尋相符的字詞。
如要提供自訂建議,請按照下列步驟操作:
- 如「建立搜尋介面」一文所述,實作基本可搜尋活動。
- 修改可搜尋的設定,加入提供自訂建議的內容供應商資訊。
- 建立表格 (例如在
SQLiteDatabase
中), 並根據建議格式化表格,加入必要欄位。 - 建立可存取建議事項表格的內容供應器,並在資訊清單中宣告該供應器。
- 宣告使用者選取建議時要傳送的
Intent
類型,包括自訂動作和自訂資料。
Android 系統會顯示搜尋對話方塊,以及搜尋建議。您需要內容供應者,系統才能從中擷取建議。請參閱「內容供應者」,瞭解如何建立內容供應者。
當系統判斷您的活動可供搜尋並提供搜尋建議時,使用者輸入查詢內容後會發生下列程序:
- 系統會擷取搜尋查詢文字 (也就是目前輸入的內容),並向管理建議的內容供應商執行查詢。
- 內容供應器會傳回
Cursor
,指向與搜尋查詢文字相關的所有建議。 - 系統會顯示
Cursor
提供的建議清單。
顯示自訂建議後,可能會發生下列情況:
- 如果使用者輸入其他字母或以任何方式變更查詢,系統會重複上述步驟,並相應更新建議清單。
- 如果使用者執行搜尋,系統會忽略建議,並使用正常的
ACTION_SEARCH
意圖,將搜尋結果傳送至可搜尋的活動。 - 如果使用者選取建議,系統會將意圖傳送至可搜尋的活動,並攜帶自訂動作和自訂資料,讓應用程式開啟建議內容。
修改可供搜尋的設定
如要新增自訂建議的支援功能,請在可搜尋設定檔案的 <searchable>
元素中加入 android:searchSuggestAuthority
屬性,如下列範例所示:
<?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>
視您附加至每項建議的意圖類型,以及您想如何設定內容供應商查詢的格式而定,您可能需要其他屬性。其他選用屬性請參閱下列章節。
建立內容供應器
如要為自訂建議建立內容供應器,請先參閱「內容供應器」,瞭解如何建立內容供應器。自訂建議的內容供應器與任何其他內容供應器類似。不過,針對您提供的每項建議,Cursor
中的對應列必須包含系統可解讀並用於設定建議格式的特定資料欄。
使用者在搜尋對話方塊或搜尋小工具中輸入文字時,系統會呼叫 query()
,在每次輸入字母時查詢內容供應器以取得建議。實作 query()
時,內容供應商必須搜尋建議資料,並傳回指向系統判定為合適建議的資料列的 Cursor
。
如要瞭解如何建立自訂建議的內容供應者,請參閱下列兩節:
處理建議查詢
系統向內容供應器要求建議時,會呼叫內容供應器的 query()
方法。實作這個方法,搜尋建議資料並傳回 Cursor
,指向您認為相關的建議。
以下摘要說明系統傳遞至 query()
方法的參數 (依序排列):
uri
一律為內容,格式如下:
Uri
content://your.authority/optional.suggest.path/
SUGGEST_URI_PATH_QUERY
系統的預設行為是傳遞這個 URI,並將查詢文字附加至該 URI:
content://your.authority/optional.suggest.path/
SUGGEST_URI_PATH_QUERY
/puppies結尾的查詢文字會使用 URI 編碼規則編碼,因此您可能需要先解碼,才能執行搜尋。
只有在可搜尋的設定檔中,使用
android:searchSuggestPath
屬性設定這類路徑時,URI 才會包含optional.suggest.path
部分。如果您對多個可搜尋活動使用相同的內容供應商,才需要這麼做。如果是這種情況,請釐清建議查詢的來源。projection
- 一律為空值。
selection
- 可搜尋設定檔的
android:searchSuggestSelection
屬性中提供的值,如果未宣告android:searchSuggestSelection
屬性,則為空值。下節將進一步討論這點。selectionArgs
- 如果您在可搜尋的設定中宣告
android:searchSuggestSelection
屬性,陣列的第一個也是唯一一個元素會包含搜尋查詢。如未宣告android:searchSuggestSelection
,這個參數會是空值。下節將進一步討論這點。sortOrder
- 一律為空值。
系統可以透過兩種方式傳送搜尋查詢文字。預設方式是將查詢文字做為內容 URI 的最後一個路徑,並在 uri
參數中傳遞。不過,如果可搜尋設定的 android:searchSuggestSelection
屬性包含選取值,查詢文字會改為以 selectionArgs
字串陣列的第一個元素傳遞。這兩種做法說明如下。
在 Uri 中取得查詢
根據預設,查詢會附加為 uri
參數的最後一個區隔,也就是 Uri
物件。如要在這種情況下擷取查詢文字,請使用 getLastPathSegment()
,如以下範例所示:
Kotlin
val query: String = uri.lastPathSegment.toLowerCase()
Java
String query = uri.getLastPathSegment().toLowerCase();
這會傳回 Uri
的最後一個區隔,也就是使用者輸入的查詢文字。
在選取範圍引數中取得查詢
您的 query()
方法可能更適合接收執行查詢所需的一切,而且您可能希望 selection
和 selectionArgs
參數攜帶適當的值,因此不使用 URI 可能更有意義。在本例中,請將 android:searchSuggestSelection
屬性新增至可搜尋的設定,並使用 SQLite 選取字串。在選取字串中,加入問號 (?) 做為實際搜尋查詢的預留位置。系統會使用選取字串做為 selection
參數,並使用搜尋查詢做為 selectionArgs
陣列中的第一個元素,呼叫 query()
。
舉例來說,以下說明如何形成 android:searchSuggestSelection
屬性,以建立全文搜尋陳述式:
<?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>
完成這項設定後,query()
方法會將 selection
參數做為 "word MATCH ?"
傳送,並將 selectionArgs
參數做為搜尋查詢傳送。將這些項目做為各自的引數傳遞至 SQLite query()
方法時,系統會將這些項目合成在一起,也就是以查詢文字取代問號。如果以這種方式收到建議查詢,且需要在查詢文字中加入萬用字元,請將萬用字元附加至 selectionArgs
參數或在該參數前加上萬用字元,因為這個值會以引號括住,並插入問號的位置。
上一個範例中的另一個屬性是 android:searchSuggestIntentAction
,這個屬性會定義使用者選取建議時,隨每個意圖傳送的意圖動作。詳情請參閱「宣告建議的意圖」一節。
建立建議表格
使用 Cursor
將建議傳回系統時,系統會預期每列都有特定資料欄。無論您是將建議資料儲存在裝置上的 SQLite 資料庫、網路伺服器上的資料庫,還是裝置或網路上的其他格式,請將建議格式化為表格中的資料列,並以 Cursor
呈現。
系統可辨識多個資料欄,但只有兩個是必填欄位:
_ID
- 每個建議的專屬整數資料列 ID。系統需要這個項目,才能在
ListView
中顯示建議。 SUGGEST_COLUMN_TEXT_1
- 系統建議的字串。
以下資料欄均為選填。我們會在後續章節中進一步說明。
SUGGEST_COLUMN_TEXT_2
- 字串。如果
Cursor
包含這個資料欄,所有建議都會以兩行格式提供。這個資料欄中的字串會顯示在主要建議文字下方,成為第二行較小的文字。如果沒有次要文字,可以設為空值或空白。 SUGGEST_COLUMN_ICON_1
- 可繪資源、內容或檔案 URI 字串。如果您的
Cursor
包含這個資料欄,所有建議都會以圖示加文字的格式提供,可繪製的圖示位於左側。這可以是空值或零,表示這一列中沒有圖示。 SUGGEST_COLUMN_ICON_2
- 可繪資源、內容或檔案 URI 字串。如果您的
Cursor
包含這個資料欄,所有建議都會以「圖示 + 文字」格式提供,圖示位於右側。這可以是空值或零,表示這一列中沒有圖示。 SUGGEST_COLUMN_INTENT_ACTION
- 意圖動作字串。如果這個資料欄存在,且指定資料列中含有值,系統就會在形成建議的意圖時,使用這裡定義的動作。如果未提供元素,系統會根據可搜尋設定中的
android:searchSuggestIntentAction
欄位採取行動。如果所有建議的動作都相同,使用android:searchSuggestIntentAction
指定動作並省略這個資料欄,效率會更高。 SUGGEST_COLUMN_INTENT_DATA
- 資料 URI 字串。如果這個資料欄存在,且在指定資料列中含有值,系統就會在形成建議的意圖時使用這項資料。如果未提供元素,系統會從可搜尋設定中的
android:searchSuggestIntentData
欄位擷取資料。如果未提供任何來源,意圖的資料欄位會為空值。如果所有建議的資料都相同,或可使用常數部分和特定 ID 描述,則使用android:searchSuggestIntentData
指定資料會更有效率,並可省略這個資料欄。 SUGGEST_COLUMN_INTENT_DATA_ID
- URI 路徑字串。如果這個資料欄存在,且在指定資料列中含有值,系統會將「/」和這個值附加至意圖中的資料欄位。只有在可搜尋設定中,
android:searchSuggestIntentData
屬性指定的資料欄位已設為適當的基本字串時,才使用這項功能。 SUGGEST_COLUMN_INTENT_EXTRA_DATA
- 任意資料。如果這個資料欄存在,且在特定資料列中含有值,這就是形成建議意圖時使用的額外資料。如果未提供,意圖的額外資料欄位會是空值。這個欄可讓建議提供額外資料,並以額外內容的形式納入意圖的
EXTRA_DATA_KEY
鍵中。 SUGGEST_COLUMN_QUERY
- 如果這個資料欄存在,且指定資料列中存在這個元素,系統就會在形成建議的查詢時使用這項資料,並將其納入意圖的
QUERY
鍵中做為額外資料。如果建議的動作是ACTION_SEARCH
,則必須提供這項資訊,否則為選填。 SUGGEST_COLUMN_SHORTCUT_ID
- 僅用於提供快速搜尋框的建議。這個資料欄會指出搜尋建議是否必須儲存為捷徑,以及是否必須經過驗證。使用者輕觸快速搜尋框中的建議時,通常會建立捷徑。如果缺少這項資訊,結果會儲存為捷徑,且不會重新整理。如果設為
SUGGEST_NEVER_MAKE_SHORTCUT
,結果就不會儲存為捷徑。否則,系統會使用捷徑 ID,透過SUGGEST_URI_PATH_SHORTCUT
再次檢查最新建議。 SUGGEST_COLUMN_SPINNER_WHILE_REFRESHING
- 僅用於提供快速搜尋框的建議。這個資料欄會指定在快速搜尋框中重新整理建議的捷徑時,必須顯示微調器,而不是
SUGGEST_COLUMN_ICON_2
中的圖示。
以下各節將進一步說明這些資料欄。
宣告建議意圖
當使用者從搜尋對話方塊或小工具下方顯示的清單中選取建議時,系統會將自訂 Intent
傳送至可搜尋的活動。您必須定義意圖的動作和資料。
宣告意圖動作
自訂建議最常見的意圖動作是
ACTION_VIEW
,適用於開啟某個項目,例如字詞的定義、聯絡資訊或網頁。
不過,意圖動作可以是任何其他動作,且每個建議的動作可能不同。
視是否要讓所有建議使用相同的意圖動作而定,您可以透過兩種方式定義動作:
- 使用可搜尋設定檔的
android:searchSuggestIntentAction
屬性,為所有建議定義動作,如下列範例所示:<?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>
- 使用「
SUGGEST_COLUMN_INTENT_ACTION
」欄定義個別建議的動作。如要這麼做,請將SUGGEST_COLUMN_INTENT_ACTION
欄新增至建議表格,並為每項建議放入要使用的動作,例如"android.intent.action.VIEW"
。
您也可以結合這兩種技術。舉例來說,您可以加入 android:searchSuggestIntentAction
屬性,並指定預設要用於所有建議的動作,然後在 SUGGEST_COLUMN_INTENT_ACTION
欄中宣告其他動作,覆寫部分建議的動作。如未在 SUGGEST_COLUMN_INTENT_ACTION
欄中提供值,系統會使用 android:searchSuggestIntentAction
屬性中提供的意圖。
宣告意圖資料
使用者選取建議時,可搜尋活動會收到您定義的動作意圖 (如上一節所述),但意圖也必須攜帶資料,讓活動識別選取的建議。具體來說,資料必須是每個建議的專屬內容,例如 SQLite 資料表中建議的資料列 ID。收到意圖後,您可以使用 getData()
或 getDataString()
擷取附加資料。
您可以透過下列兩種方式定義意圖隨附的資料:
- 在建議表格的
SUGGEST_COLUMN_INTENT_DATA
欄中,定義每項建議的資料。在建議表格中,為每個意圖提供所有必要資料資訊,包括
SUGGEST_COLUMN_INTENT_DATA
欄,然後在每列填入專屬資料。這個資料欄中的資料會附加至意圖,與您在這個資料欄中定義的完全一致。然後使用getData()
或getDataString()
擷取該值。 - 將資料 URI 分成兩部分:所有建議共用的部分,以及每個建議獨有的部分。將這些部分分別放入可搜尋設定的
android:searchSuggestintentData
屬性,以及建議資料表的SUGGEST_COLUMN_INTENT_DATA_ID
欄。以下範例說明如何宣告 URI 片段,該片段是可搜尋設定的
android:searchSuggestIntentData
屬性中所有建議的通用片段:<?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>
在建議表格的
SUGGEST_COLUMN_INTENT_DATA_ID
欄中,加入每項建議的最終路徑 (獨一無二的部分)。使用者選取建議時,系統會從android:searchSuggestIntentData
取得字串,附加斜線 (/),然後從SUGGEST_COLUMN_INTENT_DATA_ID
欄位新增對應值,形成完整的內容 URI。然後使用getData()
擷取Uri
。
新增更多資料
如要透過意圖表達更多資訊,可以新增另一個資料表欄 (例如 SUGGEST_COLUMN_INTENT_EXTRA_DATA
),儲存建議的額外資訊。儲存在這個資料欄中的資料會放在意圖額外套裝組合的 EXTRA_DATA_KEY
中。
處理意圖
提供自訂意圖的自訂搜尋建議後,您需要讓可搜尋的活動在使用者選取建議時處理這些意圖。除了處理 ACTION_SEARCH
意圖 (可搜尋活動已執行的動作) 外,以下範例說明如何在活動的 onCreate()
回呼中處理意圖:
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); }
在本例中,意圖動作為 ACTION_VIEW
,而資料會攜帶指向建議項目的完整 URI,由 android:searchSuggestIntentData
字串和 SUGGEST_COLUMN_INTENT_DATA_ID
資料欄合成。然後,URI 會傳遞至本機 showResult()
方法,該方法會查詢內容供應器,找出 URI 指定的項目。
重新撰寫查詢文字
根據預設,如果使用者使用方向控制項 (例如軌跡球或 D-Pad) 瀏覽建議清單,查詢文字不會更新。不過,您可以暫時將文字方塊中顯示的使用者查詢文字,改寫為與焦點建議相符的查詢。使用者可以查看建議的查詢,並選取搜尋框來編輯查詢,然後再將查詢傳送為搜尋。
您可以透過下列方式重新撰寫查詢文字:
- 在可搜尋的設定中加入
android:searchMode
屬性,並使用"queryRewriteFromText"
值。在本例中,建議的SUGGEST_COLUMN_TEXT_1
欄內容會用於改寫查詢文字。 - 在可搜尋的設定中加入
android:searchMode
屬性,並使用"queryRewriteFromData"
值。在本例中,建議的SUGGEST_COLUMN_INTENT_DATA
欄內容會用於改寫查詢文字。請只將這項功能用於要向使用者顯示的 URI 或其他資料格式,例如 HTTP 網址。請勿使用內部 URI 結構來重新編寫查詢。 - 在建議表格的
SUGGEST_COLUMN_QUERY
欄中,提供不重複的查詢文字字串。如果這個資料欄存在,且包含目前建議的值,系統就會用來改寫查詢文字,並覆寫先前的任一實作項目。
向快速搜尋框顯示搜尋建議
將應用程式設定為提供自訂搜尋建議後,只要修改可搜尋的設定,加入 android:includeInGlobalSearch
並將值設為 "true"
,即可讓全球使用者透過快速搜尋框使用這些建議。
只有在內容供應商要求讀取權限時,才需要額外作業。在這種情況下,您需要為供應商新增 <path-permission>
元素,授予快速搜尋框讀取內容供應商的權限,如下列範例所示:
<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>
在本例中,供應商會限制內容的讀取和寫入權限。
<path-permission>
元素會授予 "android.permission.GLOBAL_SEARCH"
權限,允許讀取 "/search_suggest_query"
路徑前置碼內的內容,藉此修正限制。這會授予快速搜尋框存取權,以便向內容供應商查詢建議。
如果內容供應器未強制執行讀取權限,快速搜尋框預設會讀取該供應器。
在裝置上啟用建議功能
根據預設,應用程式不會在快速搜尋框中提供建議,即使已設定也是如此。使用者可以開啟「設定」>「搜尋」中的「可搜尋項目」,然後啟用應用程式做為可搜尋項目,選擇是否要在快速搜尋框中顯示應用程式的建議。
「快速搜尋框」可用的每個應用程式,都會在「可搜尋項目」設定頁面中顯示項目。項目包括應用程式名稱,以及可從應用程式搜尋的內容簡短說明,並在快速搜尋方塊中提供建議。如要定義可搜尋應用程式的說明文字,請將 android:searchSettingsDescription
屬性新增至可搜尋設定,如以下範例所示:
<?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
字串,並說明可搜尋的內容。例如音樂應用程式的「藝人、專輯和曲目」,或是記事本應用程式的「已儲存的記事」。提供這類說明很重要,使用者才能瞭解系統會提供哪些建議。如果 android:includeInGlobalSearch
為 true,請務必加入這項屬性。
使用者必須前往設定選單,才能為應用程式啟用搜尋建議,因此如果搜尋是應用程式的重要功能,請考慮如何向使用者傳達這項資訊。舉例來說,您可以在使用者首次啟動應用程式時提供附註,說明如何為快速搜尋框啟用搜尋建議。
管理快速搜尋框建議捷徑
使用者從快速搜尋框選取的建議可以自動變成捷徑。系統會從內容供應商複製這些建議,以便快速存取建議,不必重新查詢內容供應商。
根據預設,快速搜尋方塊擷取的所有建議都會啟用這項功能,但如果建議資料會隨時間變更,您可以要求重新整理捷徑。舉例來說,如果建議參照動態資料 (例如聯絡人的狀態),請要求在向使用者顯示建議時重新整理建議捷徑。如要這麼做,請在建議表格中加入 SUGGEST_COLUMN_SHORTCUT_ID
。您可以使用這個資料欄,透過下列其中一種方式設定每個建議的快速鍵行為:
讓快速搜尋框重新查詢內容供應器,取得建議捷徑的最新版本。
在
SUGGEST_COLUMN_SHORTCUT_ID
欄中提供值,以便每次顯示捷徑時,系統重新查詢建議的最新版本。在重新整理查詢傳回結果前,快速指令會顯示最近可用的資料,之後建議就會重新整理並顯示新資訊。系統會將重新整理查詢傳送至內容供應器,URI 路徑為SUGGEST_URI_PATH_SHORTCUT
,而非SUGGEST_URI_PATH_QUERY
。請確保傳回的
Cursor
包含一個建議,且使用的欄與原始建議相同,或是空白,表示捷徑已失效。如果捷徑失效,建議就會消失,捷徑也會移除。如果建議參照的資料可能需要較長時間才能重新整理 (例如以網路為基礎的重新整理),您也可以在建議表格中新增
SUGGEST_COLUMN_SPINNER_WHILE_REFRESHING
資料欄,並將值設為 true,這樣系統就會在重新整理完成前,在右側圖示顯示進度微調器。如果值不是 true,就不會顯示進度指標。完全禁止將建議複製到捷徑。
在
SUGGEST_COLUMN_SHORTCUT_ID
欄中提供SUGGEST_NEVER_MAKE_SHORTCUT
值。在這種情況下,建議內容絕不會複製到快速指令。只有在絕對不想顯示先前複製的建議時,才需要執行這項操作。如果為資料欄提供一般值,建議捷徑只會顯示到重新整理查詢傳回為止。套用預設的快速鍵行為。
針對未變更且可儲存為快速鍵的每個建議,請將
SUGGEST_COLUMN_SHORTCUT_ID
留空。
如果建議內容一律不會變更,則不需要 SUGGEST_COLUMN_SHORTCUT_ID
欄。
關於快速搜尋框建議排名
為快速搜尋框提供應用程式搜尋建議後,快速搜尋框排名會決定系統如何向使用者顯示特定查詢的建議。這可能取決於有多少其他應用程式提供該查詢的結果,以及使用者選取您應用程式結果的頻率,相較於其他應用程式的結果。我們無法保證建議的排序方式,也無法保證系統會針對特定查詢顯示您應用程式的建議。一般來說,提供優質結果可提高應用程式建議顯示在顯眼位置的機率,而提供劣質建議的應用程式則較有可能排名較低或不會顯示。