2010-10-13 342 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的路徑組件。