Android搜尋建議(搜尋聯想)

來源:互聯網
上載者:User

Android搜尋建議(搜尋聯想)

Android的搜尋建議,簡言之,就是說當使用者輸入某一個關鍵詞後,系統自動給出幾個含有相近關鍵詞的搜尋建議。

如下:

 

MainActivity.java

 

package zhangphil.search;import android.support.v7.app.ActionBarActivity;import android.os.Bundle;import android.provider.SearchRecentSuggestions;import android.view.View;import android.widget.Button;public class MainActivity extends ActionBarActivity {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button search = (Button) findViewById(R.id.search);search.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 發起搜尋search();}});Button clear = (Button) findViewById(R.id.clear);clear.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {clear();}});}private void search() {// 向Android系統發起搜尋請求。this.onSearchRequested();}// onSearchRequested()方法可以重載 ,也可以不用重載。取決於是否有更多參數或資料傳遞給下一步操作。// 通常代碼運行邏輯需要傳遞更多資料給下一個動作時候,則可以重載此方法以完成更多資料的傳遞。// 如果不重載,也可以。Android系統會啟動預設的搜尋方塊。(在UI的上方)@Overridepublic boolean onSearchRequested() {Bundle bundle = new Bundle();bundle.putString(some key, some value);this.startSearch(輸入搜尋的關鍵詞/** 初始化搜尋方塊中的提示詞 */, true, bundle, false /** 此處若為true,則將啟動手機上的全域設定的那個搜尋,比如Google搜尋 */);return true;}// 清除全部曆史搜尋記錄private void clear() {SearchRecentSuggestions suggestions = new SearchRecentSuggestions(this,ZhangPhilSuggestionProvider.AUTHORITY,ZhangPhilSuggestionProvider.MODE);// 出於使用者隱私的考慮,給APP提供清除所有使用者搜尋歷程記錄的選項。suggestions.clearHistory();}}

 

onSearchRequested將觸發Android系統自動彈出搜尋方塊。MainActivity需要的布局檔案activity_main.xml很簡單,兩個按鈕,一個觸發搜尋事件,一個觸發清除搜尋歷程記錄動作:


 

AndroidManifest.xml的內容:

 

                                                                                                                                                                                          


 

SearchActivity.java檔案:

package zhangphil.search;import android.app.Activity;import android.app.SearchManager;import android.content.Intent;import android.os.Bundle;import android.provider.SearchRecentSuggestions;import android.widget.Toast;public class SearchActivity extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Intent intent = getIntent();if (Intent.ACTION_SEARCH.equals(intent.getAction())) {// 存關鍵詞saveMyRecentQuery(intent);}}private void saveMyRecentQuery(Intent intent) {// 把搜尋的關鍵詞儲存到Android系統的內建的資料庫中。// 如無必要定製,則此過程可以使用標準、通用的方法。String query = intent.getStringExtra(SearchManager.QUERY);SearchRecentSuggestions suggestions = new SearchRecentSuggestions(this,ZhangPhilSuggestionProvider.AUTHORITY,ZhangPhilSuggestionProvider.MODE);suggestions.saveRecentQuery(query, null);Toast.makeText(this, 搜尋關鍵詞: + query ,Toast.LENGTH_LONG).show();}}

 

 

 

ZhangPhilSuggestionProvider.java

 

package zhangphil.search;import android.content.SearchRecentSuggestionsProvider;public class ZhangPhilSuggestionProvider extendsSearchRecentSuggestionsProvider {// 可隨意定義一個可區別的字串,但注意全域的唯一相同引用。public final static String AUTHORITY = ZhangPhil_AUTHORITY;public final static int MODE = DATABASE_MODE_QUERIES;public ZhangPhilSuggestionProvider() {setupSuggestions(AUTHORITY, MODE);}}

 

 

searchable.xml

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.