【问题标题】:Pass a parameter to a Custom Search Suggestion ContentProvider将参数传递给自定义搜索建议 ContentProvider
【发布时间】:2011-10-30 18:52:41
【问题描述】:

我有一个有效的自定义搜索建议类(通过http://developer.android.com/guide/topics/search/adding-custom-suggestions.html)。它目前返回一种类型的信息——“产品名称”。

我在我的应用中添加了一些额外的活动(屏幕),这样如果一个人在产品页面上,启动搜索应该会返回来自“产品名称”的结果,但如果他们在另一个活动中,我会喜欢拉“制造商名称”的搜索建议。

我看到了Accessing appSearchData bundle from ContentProvider,但自定义搜索建议提供程序扩展了 ContentProvider,它不适用于答案

Bundle b = intent.getBundleExtra(SearchManager.APP_DATA);

此 Bundle 可用于搜索结果类,但不可用于 contentprovider。

如何最好地将参数(“产品”或“制造商”)传递给搜索建议内容提供商?

【问题讨论】:

    标签: android search android-contentprovider


    【解决方案1】:

    这似乎不是一个理想的解决方案,但我有同样的需求,我发现我可以通过向处理搜索建议的 ContentProvider 的子类添加一个公共 ivar 或方法来完成这项工作。在开始搜索之前,您可以根据需要配置您的提供程序。您可以像这样从活动中访问提供者实例:

    ContentProviderClient client = getContentResolver().acquireContentProviderClient("my.searchsuggestionprovider");
    MyProviderClass provider = (MyProviderClass) client.getLocalContentProvider();
    

    现在您可以使用provider.setParameter("product") 或您需要的任何内容进行配置。构建光标后,您可能需要将参数重置为默认值或其他内容。

    编辑:这被证明是不切实际的,至少在我的情况下,因为每次输入字符时都会使用 query() 调用内容提供程序。相反,我采用了类似于set-search-hint-dynamically 中描述的解决方法。通过创建替代的“可搜索”XML 定义和活动,您可以更改在 query() 中传递给内容提供者的 URI,添加路径组件以提供您需要的其他参数或上下文。

    【讨论】:

    • 你能详细说明为什么它不切实际吗?
    【解决方案2】:

    我刚刚为我的内容提供者上的参数创建了一个静态变量,并从活动中设置它。我一直在考虑,这是我找到的最干净的解决方法!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-10
      • 1970-01-01
      相关资源
      最近更新 更多