1. 程式人生 > >Android API Guides---Searchable Configuration

Android API Guides---Searchable Configuration

default 最小 conf lena attr mda ati 請求 -c

Searchable Configuration

為了實現與Android系統(提供搜索查詢到活動中,並提供搜索建議)協助搜索,應用程序必須提供一個XML文件的形式搜索配置。


本頁面描寫敘述在語法和使用方面的搜索配置文件。有關怎樣為應用程序實現搜索功能的很多其它信息。開始與開發商指南,了解有關創建搜索界面。


文件位置:
res/xml/filename.xml
Android使用的文件名稱作為資源ID。
句法:

?xml version="1.0" encoding="utf-8"?>
<searchable
xmlns:android="http://schemas.android.com/apk/res/android" android:label="string resource" android:hint="string resource" android:searchMode=["queryRewriteFromData" | "queryRewriteFromText"] android:searchButtonText="string resource"
android:inputType="inputType" android:imeOptions="imeOptions" android:searchSuggestAuthority="string" android:searchSuggestPath="string" android:searchSuggestSelection="string" android:searchSuggestIntentAction="string"
android:searchSuggestIntentData="string" android:searchSuggestThreshold="int" android:includeInGlobalSearch=["true" | "false"] android:searchSettingsDescription="string resource" android:queryAfterZeroResults=["true" | "false"] android:voiceSearchMode=["showVoiceSearchButton" | "launchWebSearch" | "launchRecognizer"] android:voiceLanguageModel=["free-form" | "web_search"] android:voicePromptText="string resource" android:voiceLanguage="string" android:voiceMaxResults="int" > <actionkey android:keycode="KEYCODE" android:queryActionMsg="string" android:suggestActionMsg="string" android:suggestActionMsgColumn="string" > </searchable>
內容:
<searchable>
定義了Android系統用於提供輔助搜索全部搜索配置。
屬性:
android:label
字符串資源。 (必需的)應用程序的名稱。它應該是一樣適用於Android的名字:您<活動>或<應用> manifest元素的標簽屬性。 includeInGlobalSearch為“true”。在這樣的情況下。這個標簽是用來識別您的應用程序在系統中的搜索設置一個可搜索項:當你設置的android這個標簽是唯一對用戶可見。
android:hint
字符串資源。 (推薦)。文字在搜索文本字段時未輸入文本顯示。

它提供了一個提示。關於哪些內容是搜索的用戶。

為了與其它Android應用程序的一致性。你應該格式化為Android字符串:提示為“搜索<內容或產品>”。

比如。“搜索歌曲和藝術家”或“搜索YouTube”的視頻。


android:searchMode
關鍵詞。設置用於控制搜索介紹附加模式。

眼下可用的模式定義怎樣當一個自己定義的建議獲得焦點的查詢文本應該改寫。

以下的模式值被接受:


Value Description
"queryRewriteFromText" Use the value from the SUGGEST_COLUMN_TEXT_1 column to rewrite the query text.
"queryRewriteFromData" Use the value from the SUGGEST_COLUMN_INTENT_DATAcolumn to rewrite the query text. This should only be used when the values in SUGGEST_COLUMN_INTENT_DATA are suitable for user inspection and editing, typically HTTP URI‘s.

值說明
“queryRewriteFromText”從SUGGEST_COLUMN_TEXT_1列使用值重寫查詢文本。


“queryRewriteFromData”從SUGGEST_COLUMN_INTENT_DATA列使用值重寫查詢文本。當SUGGEST_COLUMN_INTENT_DATA的數值適用於用戶檢查和編輯。典型的HTTP URI的這應該僅僅被使用。


了解很多其它信息,請參閱關於加入自己定義建議重寫查詢文本的討論。






android:searchButtonText
字符串資源。該文在運行搜索button顯示。

默認情況下。該button會顯示一個搜索圖標(放大鏡),這是理想的國際化。所以除非行為是其它東西比搜索(如在Web URL請求。你不應該使用這個屬性來更改button瀏覽器)。

android:inputType
關鍵詞。定義輸入方法的類型(如軟鍵盤的類型)使用。

對於大多數的搜索。當中自由格式文本的預期,則不須要此屬性。

見inputType下針對此屬性合適的值的清單。
android:imeOptions
關鍵詞。耗材為輸入法的附加選項。

對於大多數的搜索,當中自由格式文本的預期,則不須要此屬性。默認的輸入法是“actionSearch”(提供了“搜索”button,而不是在軟鍵盤回車)。見imeOptions針對此屬性合適的值的清單。


搜索建議屬性


假設您已經定義了一個內容提供商生成的搜索建議。你須要定義配置與內容提供商通信的附加屬性。在提供搜索建議。你須要一些以下<搜索>屬性:




android:searchSuggestAuthority
串。 (需提供搜索建議。

)該值必須在android規定的權限匹配字符串:Android清單<provider>元素的authorities屬性。
android:searchSuggestPath
串。此路徑用作建議查詢URI的一部分,前綴和權威之後,但在標準的建議路徑之前。

這個,假設你有一個單一的內容提供商發出不同類型的建議(如不同的數據類型)時。才須要,你須要一種方式。當您收到他們歧義的建議查詢。
android:searchSuggestSelection
串。

這個值被傳遞到你的查詢功能作為選擇參數。

通常,這是為你的數據庫中的WHERE子句。而且應該包括一個問號,這對於已輸入的用戶(比如,“查詢=?”)的實際查詢字符串的占位符。可是,您也能夠使用不論什麽非空值通過selectionArgs兩個參數觸發查詢文本交付(然後忽略選擇參數)。
android:searchSuggestIntentAction
串。

當用戶點擊自己定義搜索建議。能夠使用默認的意圖動作(如“android.intent.action.VIEW”)。假設沒有被選中的建議(通過SUGGEST_COLUMN_INTENT_ACTION列)覆蓋。當用戶點擊一個建議,這個值被放在意向的行動領域。
android:searchSuggestIntentData
串。當用戶點擊自己定義搜索建議。使用默認意圖數據。

假設沒有選擇的建議(通過SUGGEST_COLUMN_INTENT_DATA列)覆蓋,當用戶點擊一個建議,這個值被放置在Intent的數據字段。
android:searchSuggestThreshold
整數。所需的最小字符數來觸發一個建議查詢。僅僅有保證系統不會詢問您的內容提供商以外的不論什麽閾值短。

缺省值是0。
有關搜索建議上述屬性的具體信息,請參閱指南為近期查詢建議添加和加入自己定義建議。


高速搜索框屬性


為了使您的自己定義搜索建議提供給高速搜索框,你須要一些以下<搜索>屬性:




android:includeInGlobalSearch
布爾。 (需提供在高速搜索框的搜索建議。)設置為“true”,假設你想被列入全球訪問高速搜索框您的建議。用戶仍然必須啟用您的應用程序在系統中搜索設置一個可搜索的項目之前。您的建議將出如今高速搜索框。
android:searchSettingsDescription
串。提供了您提供高速搜索框,它會顯示在搜索項的條目為您的應用搜索建議的簡要說明。

你的描寫敘述應該簡明地描寫敘述就是搜索的內容。比如,“藝術家,專輯和曲目”的音樂應用程序,或記事本應用“保存筆記”。
android:queryAfterZeroResults
布爾。設置為“真”,假設你想你的內容提供商調用對於已在過去的返回結果為零查詢的超集。比如。假設你的內容提供商返回零結果“博”。應為requiried“鮑勃”。假設設置為“假”,超集是為單個會話忽略(“鮑勃”不會調用又一次查詢)。

這僅持續了搜索對話框的生命或使用搜索窗體小部件(當搜索對話框或活動被又一次打開。“博”再次查詢內容提供商)時。活動的生活。默認值是假的。
語音搜索屬性


要啟用語音搜索,你須要一些以下的<搜索>屬性:




android:voiceSearchMode
關鍵詞。 (需提供語音搜索功能。)啟用語音搜索,為語音搜索一個特定的模式。

(語音搜索可能無法通過該設備,在這樣的情況下。這些標誌沒有不論什麽效果來提供。)下面模式值被接受:

值說明
“秀語音搜索鍵”查看語音搜索button,假設語音搜索可在設備上。

假設設置。則要麽“launchWebSearch”或“launchRecognizer”也必須設置(通過管道|分隔符)。


“launchWebSearch”語音搜索button。直接將用戶帶到一個內置語音網絡搜索活動。

大多數應用程序並不須要這個標誌,由於它須要用戶遠離當中搜索被調用的活動。
“launchRecognizer”語音搜索button。直接將用戶帶到一個內置的錄音活動。該活動提示用戶說話,錄制口述文本,並將由此形成的查詢文本的搜索活動,就如同假設用戶鍵入它進入搜索界面。並點擊搜索button。

android:voiceLanguageModel
關鍵詞。語言模型應該由語音識別系統中使用。以下的值被接受:


Value Description
"free_form" Use free-form speech recognition for dictating queries. This is primarily optimized for English. This is the default.
"web_search" Use web-search-term recognition for shorter, search-like phrases. This is available in more languages than "free_form".

另請參閱EXTRA_LANGUAGE_MODEL以獲取很多其它信息。


機器人:voicePromptText
串。

另外一個消息,在語音輸入對話框顯示。
機器人:voiceLanguage
串。能夠預料的口語,表現為常數的語言環境的字符串值(如“德”為德語或“FR”的法語)。這是必要的,僅僅有當它是從Locale.getDefault的當前值不同()。
機器人:voiceMaxResults
整數。

強制結果的最大數量返回,當中包含“最佳”的結果它總是作為ACTION_SEARCH意圖的主要查詢提供。必須大於或等於1。使用EXTRA_RESULTS來從意圖的結果。

假設沒有提供,識別器選擇多少的成績來回報。
<actionkey>
定義為搜索動作的裝置密鑰和行為。一個搜索行動在button的設備上的觸摸提供了一個特殊的行為。基於當前的查詢或集中的建議。

比如。聯系人應用程序提供了搜索行動在CALL按下button啟動一個電話給currenly集中接觸的建議。
並不是全部的操作鍵都能夠在每一個設備上,而且不是全部的鍵被同意以這樣的方式被重寫。比如。“Home”鍵不能使用,必須總是返回到主屏幕。

此外,一定不要定義該公司須要鍵入搜索查詢一鍵操作鍵。這基本上限制了可用的和合理的操作鍵來調用鍵和菜單鍵。

還要註意的是操作鍵都沒有發現一般。所以你不應該為他們提供作為核心用戶功能。


必須定義機器人:鍵碼來定義。以確定在搜索行動的密鑰和其他三個屬性中的至少一個。


屬性:
android:keycode
串。

(必需)從KeyEvent的關鍵代碼。表示要到(比如,“KEYCODE_CALL”),響應操作鍵。

這是加入到傳遞到你的搜索活動ACTION_SEARCH意圖。

要檢查鑰匙代碼,使用getIntExtra(SearchManager.ACTION_KEY)。

不是全部的按鍵,支持的搜索行動。由於當中很多是用於打字,導航,或系統功能。
android:queryActionMsg
串。假設在用戶輸入查詢文本按下操作鍵要發送的操作信息。此被增加到該系統傳遞到您的搜索活動ACTION_SEARCH意圖。要檢查字符串。請使用getStringExtra(SearchManager.ACTION_MSG)。
android:suggestActionMsg
串。假設按下了操作鍵。而一個建議是在焦點要被發送的動作信息。這是加入到系統傳遞給你的搜索活動(使用你的建議定義的操作)的意圖。要檢查字符串,請使用getStringExtra(SearchManager.ACTION_MSG)。

假設您的建議支持此操作鍵這應該僅僅被使用。

假設不是全部的建議,能夠處理同樣的操作鍵,則必須改用下面的android:suggestActionMsgColumn屬性。


android:suggestActionMsgColumn
串。

在內容提供商定義此操作鍵,也就是當用戶按下操作鍵時一個建議是在焦點要發送的動作信息的列的名稱。

這個屬性能夠讓你控制一條建議按建議的基礎操作鍵。是由於。而是採用了android:suggestActionMsg屬性來定義全部建議的行動信息,在內容提供商的每一個條目提供自己的行動的消息。
首先,你必須在你的內容提供商將列定義為每一個建議提供一個動作消息,然後提供此屬性的列的名稱。

該系統著眼於你的建議光標,使用這裏提供的選擇行動的消息欄。然後選擇從光標動作消息字符串字符串。該字符串被加入到該系統傳遞給你的搜索活動(使用你的建議定義的動作)的意圖。

要檢查字符串,請使用getStringExtra(SearchManager.ACTION_MSG)。假設該數據不為選定建議存在,則操作鍵被忽略。


例:
在保存RES / XML / searchable.xml XML文件:

<?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:searchSuggestAuthority="dictionary"
    android:searchSuggestIntentAction="android.intent.action.VIEW"
    android:includeInGlobalSearch="true"
    android:searchSettingsDescription="@string/settings_description" >
</searchable>


Value Description
"free_form" Use free-form speech recognition for dictating queries. This is primarily optimized for English. This is the default.
"web_search" Use web-search-term recognition for shorter, search-like phrases. This is available in more languages than "free_form".

Android API Guides---Searchable Configuration