【问题标题】:Content Provider to fetch results from web server?内容提供者从 Web 服务器获取结果?
【发布时间】:2012-02-22 00:35:33
【问题描述】:

我想创建一个内容提供者,它将从网络服务器中获取结果。就像我向我的网络服务器发送一些帖子参数,它返回一些 JSON 响应,我必须解析并在 android 的快速搜索框中显示它。

我已经查看了 SearchableDictionary,但他们似乎没有连接到服务器来获取结果。我在网上搜索,但在任何地方都没有合适的例子。

我该怎么做?

【问题讨论】:

  • 你的问题到底是什么?创建内容提供者,还是从网络服务器以 JSON 格式获取(和缓存)数据?
  • 很抱歉提出如此不负责任的问题。我想知道如何从内容提供商那里调用 Web 服务器?是否需要创建 AsyncTask?
  • 也许这个问题stackoverflow.com/questions/4264589/…可以帮到你。

标签: android android-searchmanager


【解决方案1】:

ContentProvider 并不是异步数据源。在这种情况下,您需要创建一个SyncAdapter,它使本地数据库与远程数据存储保持同步,并公开来自该本地数据库的数据。 ContentResolvers 与 SyncAdapters 很好地集成在一起以提供此功能。

阅读http://developer.android.com/guide/topics/providers/content-provider-creating.html#DataStorage上的“开始构建之前”中的第 4 点

【讨论】:

  • 我的网络服务器根据我发送给它的查询返回不同的数据。我的意思是没有固定的存储库。 Web 服务器也需要身份验证。需要登录才能获得结果。在这种情况下是否有可能在 android 的快速搜索框小部件中获得结果?
  • 您必须事先进行身份验证,如果您使用的是快速搜索框,则更是如此。那时您不能打扰用户,浪费时间进行身份验证。至于“基于查询部分的不同数据”,难道不能在一定程度上抽象出来,暴露出单一的datastore接口吗?
  • 这就像在云端搜索一些数据。我发送查询,服务器将返回与查询匹配的记录。在这种情况下如何使用同步适配器?
  • 并且每次查询我都必须发送一个存储在我的 SharedPreferences 中的 cookie。我似乎没有找到从内容提供商访问共享首选项的方法
  • 好吧,出于好奇,我尝试连接到我的 Web 服务器,获取响应并尝试显示它。它有效。都在内容提供者的 query() 函数中。
猜你喜欢
  • 1970-01-01
  • 2017-01-11
  • 2019-05-29
  • 1970-01-01
  • 1970-01-01
  • 2012-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多