我想为我的应用程序的本地搜索历史指定一个图标,但我没有看到文档中的任何内容可以让我轻松添加一个。为了清楚起见,我使用内置的Android搜索API并使用我已实现的SearchRecentSuggestionsProvider。
此外,我的目标是API级别7。
-Dan
答案 0 :(得分:2)
好吧,我不确定这是否是实现我所要求的最简单的方法,但这是我如何做到的:
我的新ContentProvider的源代码片段:
...
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
final String[] PROJECTION = new String[] {
"_id",
"display1 AS " + SearchManager.SUGGEST_COLUMN_TEXT_1,
"display2 AS " + SearchManager.SUGGEST_COLUMN_TEXT_2,
"query AS " + SearchManager.SUGGEST_COLUMN_QUERY,
android.R.drawable.ic_menu_recent_history + " AS " + SearchManager.SUGGEST_COLUMN_ICON_1,
};
final Uri URI =
Uri.parse("content://" + SearchHistoryProvider.AUTHORITY + "/suggestions");
return getContext().getContentResolver().query(
URI,
PROJECTION,
"display1 LIKE ?",
new String[] {selectionArgs[0] + "%"},
"date DESC");
}
...
如果SearchRecentSuggestionsProvider没有设置为使用两行,则上面投影中的'display2'应该更改为'null',或者可以完全省略。
如果URI中省略了“建议”路径,则无效。它必须是“建议”,否则您将看到“无效的Uri”异常。
我通过将源代码挖掘到SearchRecentSuggestionsProvider来挖掘大部分信息。
答案 1 :(得分:0)
您是否尝试将图标添加到AndroidManifest.xml文件中的提供者节?不确定它是否有效,但请参阅http://developer.android.com/guide/topics/manifest/provider-element.html以获取有关<provider>
元素属性的完整详细信息。