修改Searchable配置
保存Queries
为了获得最近的搜索词集合,你需要通过你的searchable activity把它保存在你的SearchRecentSuggestionsProvider中。
为此,你需要创建一个
SearchRecentSuggestions的实例,并调用它的
saveRecentQuery()
方法把searchable activity收到的查询关键词进行保存。下面
示例3就是在activity的 onCreate()保存Queries的一个示例。
示例3:
@OverrideSearchRecentSuggestions的构造函数需要两个参数,你的content provider(SearchRecentSuggestionsProvider)中设置的搜索授权和数据库模式。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Intent intent = getIntent();
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
String query = intent.getStringExtra(SearchManager.QUERY);
SearchRecentSuggestions suggestions = new SearchRecentSuggestions(this,
MySuggestionProvider.AUTHORITY, MySuggestionProvider.MODE);
suggestions.saveRecentQuery(query, null);
}
}
saveRecentQuery需要两个参数,第一个是搜索关键字,第二个是可选的,它表示的是搜索关键字的second line.(如果搜索关键字的没second line则为null),第二个参数只是在用DATABASE_MODE_2LINES设置为two-line mode的时候才用。如果你开启了two-line mode,系统在查找matching suggestions的时候,query text还需要匹配这个second line
清空Suggestion Data
为了保护用户的私密性,你应该总是给用户提供清空最近搜索关键字的功能。你可以通过调用clearHistory()来清空
最近的搜索关键字。
比如:
示例4:
SearchRecentSuggestions suggestions = new SearchRecentSuggestions(this,HelloSuggestionProvider.AUTHORITY, HelloSuggestionProvider.MODE);suggestions.clearHistory();
你应该通过叫"Clear Search History"的菜单项或按钮来执行上面的代码,一般清空Suggestion Data,当然最好在执行上面的代码之前先弹出一个对话框来让用户确定是否真正的需要清空Suggestion Data。