有没有办法为Search Recent Suggestions Provider指定图标?

时间:2011-08-17 19:50:43

标签: android search android-contentprovider

我想为我的应用程序的本地搜索历史指定一个图标,但我没有看到文档中的任何内容可以让我轻松添加一个。为了清楚起见,我使用内置的Android搜索API并使用我已实现的SearchRecentSuggestionsProvider。

此外,我的目标是API级别7。

-Dan

2 个答案:

答案 0 :(得分:2)

好吧,我不确定这是否是实现我所要求的最简单的方法,但这是我如何做到的:

  1. 创建另一个ContentProvider并在我的searchable.xml
  2. 中使用它
  3. 这个新的ContentProvider的查询方法将使用特殊参数和特殊URI查询我的SearchRecentSuggestionsProvider并返回该Cursor。
  4. 我的新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>元素属性的完整详细信息。