在Android中通过URI传递参数

时间:2011-03-21 07:20:50

标签: android

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

中使用名称/值对

例如,我有一个可以根据名称进行搜索的搜索提供程序。我传递了一个像这样的URI:

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

这将使任何名字中包含“约翰”的人回归,包括约翰,约翰逊,约翰逊等。

我希望有选项(但不是要求)来搜索确切的名称,而不是找到部分匹配。我在考虑做这样的事情:

含量://com.example.app/name/john确切=真

这会告诉搜索提供商只返回与“John”完全匹配的名称。但我还没有在Android中看到任何其他类似参数的例子。有没有更好的办法?我在这里缺少什么?

谢谢!

2 个答案:

答案 0 :(得分:12)

如果要传递查询参数,可以在构造URI时使用appendQueryParameter()方法

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

然后使用getQueryParameter()

访问param值
String paramValue = uri.getQueryParameter(MyProvider.MY_PARAM_NAME);

答案 1 :(得分:1)

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

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