1. 程式人生 > >Uri,UriMatcher,ContentUris工具類簡單介紹

Uri,UriMatcher,ContentUris工具類簡單介紹

Uri工具類介紹

UriMatcher工具類介紹

ContentUris介紹

Uri工具類介紹

A:Uri是幹什麼的?
關於Uri是什麼,這裡只是簡單的介紹下,全名為“統一資源識別符號“,具體他下面還有url,以及他們的區別,這裡不再介紹,以後再總結。為了方便下面對ContentProvider物件Uri的理解,這裡簡單介紹下Uri子類Url:
Url最常見於網際網路網址:http://www.baidu.com:80/index.asp 這裡http://協議部分,www.baidu.com:80域名部分,index.asp是網站具體頁面資源部分,下面介紹的Uri與這個結構類似。

B:ContentProvider物件中的Uri的作用?有哪些部分組成?
一個常見的ContentProvider中的Uri如下:
content://com.example.mycontentprovider/words 或者 content://com.example.mycontentprovider/word/1
這裡有三部分:
第一部分:content://這個部分是ContentProvider規定的,記住它吧
第二部分:com.example.mycontentprovider這個部分是ContentProvider 的authorities部分,根據這個部分ContentResolver就能找到ContentProvider。
第三部分:words或者word/detail部分,這個是具體的資源部分,當訪問者需要訪問不同資源時,這部分是變化的。

C:Android中的Uri幾種特殊形式介紹。
形式1:content://com.example.mycontentprovider/words //訪問全部資料
形式2:content://com.example.mycontentprovider/word/2 //訪問word資料張ID為2的資料
形式3:content://com.example.mycontentprovider/word/2/word //訪問word資料中ID為2的記錄的word欄位
D:String與Uri如何進行型別轉換?
轉換:String 轉換成 Uri

Uri uri = new
Uri(String string);

放鬆一下,激情四射的年代

UriMatcher工具類介紹

A:什麼是UriMatcher?
UriMatcher字面理解就是地址匹配類,他為了方便資料訪問者ContentResolver的意圖進行分類,所以在資料暴露者ContentProvider中對引數Uri進行判斷,同時也是提前確定資料暴露者實際能處理的Uri,根據Uri引數來確定所操作的資料。
具體見下圖:
為什麼要利用UriMatcher來配置Uri

B:如何建立UriMatcher?

UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH);//就這麼簡單
matcher.addURI();//就可以新增ContentProvider根據傳遞過來的Uri能執行那些方法了

D:舉例說明UriMatcher的兩個靜態方法addURI()/match()

void addURI(String authority,String path,int code);
int match(Uri uri);
eg:
   UriMatcher matcher = new UriMatcher(UriMatcher.NO_MATCH);
   matcher.addURi("com.example.mycontentprovider","words",1);
   matcher.addURI("com.example.mycontentprovider","word/#",2);
   matcher.match("content://com.example.mycontentprovider/words")    return 1;
   matcher.match("content://com.example.mycontentprovider/word/2")   return 2;
   matcher.match("content://com.example.mycontentprovider/word/100") return 2;

ContentUris介紹

A:什麼是ContentUris工具類?
ContentUris是一個操作Uri 字串的工具類。

B:他有哪些使用方法?

     ContentUris.withAppendedId(Uri uri,int id)     return Uri
     ContentUris.parseId(Uri uri)    return long

C:來個簡單的例項

    Uri uri = Uri.parse("content://com.example.mycontentprovider/word");
    Uri resultUri = ContentUrils.appendedId(uri,2);
    //resultUri = content://com.example.mycontentprovider/word/2;
    long wordId = ContentUrils.parseId(uri);
    //wordId = 2;