2010-10-13 154 views
1

我试图创建一个内容提供商,其中的密钥包含正斜杠“/”。我搜索了很长一段时间,但没有地方/例证说明它。Android内容提供商Uri匹配

内容://com.lily.provider/items/*

一般例子,我的理解: 内容://com.lily.provider/items/ab

我想要做的是:我的钥匙是带“/”的字符串
content://com.lily.provider/items/a/b 其中a/b是项目ID,它位于相同的位置作为ab。

我的问题:

  1. 意愿内容://com.lily.provider/items/a/b相匹配的内容://com.lily.provider/items/*?这是为什么?
  2. 是否有任何变通,我可以用它来解决这个问题
+0

“/”是一个正斜杠,而不是反斜杠。 – 2010-10-13 09:11:30

回答

2

遗嘱内容://com.lily.provider/items/a/b相匹配的内容://com.lily .provider/items/*?这是为什么?

是的,它会匹配。星号*表示“匹配任何字符,包括斜杠”。

是否有任何变通,我可以用它来解决这个问题

如果你想匹配已知的前缀,那么你可以添加更多的项目到您的URI匹配(按照这个顺序):

  • content://com.lily.provider/items/a/*
  • content://com.lily.provider/items/b/*
  • content://com.lily.provider/items/*

如果您坚持要在数据中使用斜线,那么您应该将URI-encode slashes作为路径分隔符%2f

否则,我不确定是什么问题。 “/items/a/b”URI将根据需要匹配您的原始模式,然后您可以根据需要解析URI的路径组件。