2011-03-21 86 views
6

是否可以(或推荐)通过Android中的URI将参数传递给内容提供者,类似于Web地址如何使用它们?也就是说,我可以在content:// URIs中使用名称/值对吗?在Android中通过URI传递参数

例如,我有一个可以基于名称进行搜索的搜索提供程序。我将它传递一个URI是这样的:

内容://com.example.app/name/john

这将在他们的名字,其中包括约翰,乔纳森,约翰逊等与“约翰”的人回归

我想要有选择(但不是要求)通过确切的名称进行搜索,而不是找到部分匹配。我想这样做是这样的:

内容://com.example.app/name/john确切=真

这将告诉搜索提供方只返回精确匹配“约翰的名字。 “但我还没有看到在Android中使用这样的参数的其他示例。有没有更好的办法?我在这里错过了什么?

谢谢!

回答

1

不,据我所见,任何参数都会从内容提供者网址中去掉(虽然我不知道为什么),但我通过使用“/”和某个前缀添加参数并解析它们来解决这个问题从手动,像这样:

content://com.example.app/name/john/paramexact/true 
+0

这些是段,参数有点不同 - 例如“content://com.example.app/table/seg1/123456?param = value” – WindRider 2013-07-13 22:18:02

12
如果你想传递的查询参数,你可以构建你的URI

LoaderFactory.createCursorLoader(this, 
       MyProvider.MY_CONTENT_URI.buildUpon().appendQueryParameter(
         MyProvider.MY_PARAM_NAME, 
         myParamValue).build(), projection, null, 
       null, null); 

时使用appendQueryParameter()方法,然后访问使用getQueryParameter帕拉姆值

( )

String paramValue = uri.getQueryParameter(MyProvider.MY_PARAM_NAME);