Android ContentProvider Uri匹配

时间:2010-10-13 07:13:25

标签: android uri android-contentprovider

我正在尝试创建一个内容提供程序,其中键包含正斜杠“/”。我搜索了很长一段时间,但没有地方/例子说明它。

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

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

我想做什么:我的密钥是带有“/”的字符串 内容://com.lily.provider/items/a/b 其中a / b是项目ID,与ab的位置相同。

我的问题:

  1. 将内容://com.lily.provider/items/a/b与内容匹配://com.lily.provider/items/*?那是为什么?
  2. 我可以用来解决问题的任何解决方法

1 个答案:

答案 0 :(得分:2)

  

将content://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的路径组件。