我的代码:
提供者描述:
<provider android:name=".searchprovider.MySuggestionProvider"
android:authorities="com.example.music.store.searchprovider.MySuggestionProvider"
android:exported="false" ></provider>
爪哇:
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 :(得分: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);
}
}