2013-05-19 37 views
0

我的代碼:如何創建SearchRecentSuggestionsProvider?

提供說明:

<provider android:name=".searchprovider.MySuggestionProvider" 
      android:authorities="com.example.music.store.searchprovider.MySuggestionProvider" 
      android:exported="false" ></provider> 

的Java:

package com.example.music.store.searchprovider; 

import android.content.SearchRecentSuggestionsProvider; 
import android.database.Cursor; 
import android.database.MergeCursor; 
import android.net.Uri; 
import android.util.Log; 

public class MySuggestionProvider extends SearchRecentSuggestionsProvider { 
    public final static String AUTHORITY = "com.example.music.store.searchprovider.MySuggestionProvider"; 
    public final static int MODE = DATABASE_MODE_2LINES | DATABASE_MODE_QUERIES; 

    public MySuggestionProvider() { 
     super(); 
     setupSuggestions(AUTHORITY, MODE); 
    } 

    @Override 
    public Cursor query(Uri uri, String[] projection, String sel, 
      String[] selArgs, String sortOrder) { 
     Cursor recentCursor = super.query(uri, projection, sel, selArgs, 
       sortOrder); 
     Cursor[] cursors = new Cursor[] { recentCursor, null}; 

     Log.e("CUR", cursors[0].toString()); 
     return new MergeCursor(cursors); 
     //retrieves a custom suggestion cursor and returns it 
    } 
}

但是當我運行此我沒有看到我的供應商。 SearchManager searchManager =(SearchManager)(SearchManager)getBaseContext()。getApplicationContext()。getSystemService(Context.SEARCH_SERVICE); if(searchManager!= null){ List searchables = searchManager.getSearchablesInGlobalSearch();

 SearchableInfo info = searchManager.getSearchableInfo(getComponentName()); 



     for (SearchableInfo inf : searchables) { 
      Log.e("nese",inf.getSuggestAuthority()); 


     } 

回答

0

在你搜索活動您需要保存在數據庫中的每個搜索查詢:

@Override 
protected void onNewIntent(Intent intent) { 
    setIntent(intent); 
    handleIntent(intent); 
} 

private void handleIntent(Intent intent) { 
    if (Intent.ACTION_SEARCH.equals(intent.getAction())) { 
     String query = intent.getStringExtra(SearchManager.QUERY); 
     //use the query to search your data somehow 
     SearchRecentSuggestions suggestions = 
       new SearchRecentSuggestions(this, 
         RecentSuggestionsProvider.AUTHORITY, 
         RecentSuggestionsProvider.MODE); 
     suggestions.saveRecentQuery(query, null); 
    } 
}