1.Urijava
通用資源標誌符(Universal Resource Identifier, 簡稱"URI")。android
Uri表明要操做的數據,Android上可用的每種資源 - 圖像、視頻片斷等均可以用Uri來表示。app
URI通常由三部分組成:ide
訪問資源的命名機制。 工具
存放資源的主機名。 spa
資源自身的名稱,由路徑表示。 .net
Android的Uri由如下三部分組成: "content://"、數據的路徑、標示ID(可選)code
舉些例子,如: 視頻
全部聯繫人的Uri: content://contacts/people圖片
某個聯繫人的Uri: content://contacts/people/5
全部圖片Uri: content://media/external
某個圖片的Uri:content://media/external/images/media/4
咱們很常常須要解析Uri,並從Uri中獲取數據。
Android系統提供了兩個用於操做Uri的工具類,分別爲UriMatcher 和ContentUris 。
雖然這兩類不是很是重要,可是掌握它們的使用,會便於咱們的開發工做。
下面就一塊兒看一下這兩個類的做用。
2.UriMatcher
UriMatcher 類主要用於匹配Uri.
使用方法以下。
首先第一步,初始化:
第三部,與已經註冊的Uri進行匹配:
上述方法會返回"vnd.android.cursor.dir/person"
總結:
--常量 UriMatcher.NO_MATCH 表示不匹配任何路徑的返回碼
--# 號爲通配符
--* 號爲任意字符
另外說一下,官方SDK說明中關於Uri的註冊是這樣寫的:
這個說明估計已是Google官方沒有更新,首先是初始化方法,沒有傳參,那麼如今初始化時,實際是必須傳參的。 能夠看一下Android2.2的源碼,無參數的構造方法已是private的了。
另外就是addURI這個方法,第二個參數開始時不須要"/", 不然是沒法匹配成功的。
3.ContentUris
ContentUris 類用於獲取Uri路徑後面的ID部分
1)爲路徑加上ID: withAppendedId(uri, id)
好比有這樣一個Uri
經過withAppendedId方法,爲該Uri加上ID
最後resultUri爲: content://com.yfz.Lesson/people/10
2)從路徑中獲取ID: parseId(uri)
Uri uri = Uri.parse("content://com.yfz.Lesson/people/10") long personid = ContentUris.parseId(uri);
最後personid 爲 :10
附上實驗的代碼: