欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android 中ContentProvider的實(shí)例詳解

 更新時(shí)間:2017年09月01日 14:57:53   投稿:lqh  
這篇文章主要介紹了Android 中ContentProvider的實(shí)例詳解的相關(guān)資料,希望通過本文大家能掌握這部分內(nèi)容,需要的朋友可以參考下

Android 中ContentProvider的實(shí)例詳解

Content Provider 的簡單介紹:

* Android中的Content Provider 機(jī)制可支持在多個(gè)應(yīng)用中存儲(chǔ)和讀取數(shù)據(jù)。這也是跨應(yīng)用 

  共享數(shù)據(jù)的唯一方式。在Android系統(tǒng)中,沒有一個(gè)公共的內(nèi)存區(qū)域,供多個(gè)應(yīng)用共享存儲(chǔ)數(shù)據(jù);

* Android 提供了一些主要數(shù)據(jù)類型的ContentProvider ,比如:音頻、視頻、圖片和私人通訊錄等;

在android.provider 包下面找到一些android提供的ContentProvider;可以通過獲得ContentProvider,
查詢他們包含的數(shù)據(jù)(查詢的條件是:已經(jīng)獲得適當(dāng)?shù)淖x取權(quán)限);

1、Uri的介紹:

Uri代表了要操作的數(shù)據(jù),Uri主要包含了兩部分的信息: 
* 需要操作的ContentProvider 
* 對(duì)ContentProvider 中的什么數(shù)據(jù)進(jìn)行操作; 
一個(gè)Uri由下列幾個(gè)部分組成: 
content://cn.itcast.provider.personprovider/person/10 

解析:

* content:// :scheme 
* cn.itcast.provider.personprovider : 主機(jī)名或anthority 
* person/10 : 路徑 
* 10 : ID 

1.1: ContentProvider(內(nèi)容提供者)的scheme 已經(jīng)由Android所規(guī)定,scheme為 content://主機(jī)名(或叫Authority)用于唯一標(biāo)識(shí)這個(gè)ContentProvider,外 部調(diào)用者可以根據(jù)這個(gè)標(biāo)識(shí)來找到它。路徑path,可以用來表示我們要操作的 數(shù)據(jù),路徑的構(gòu)建應(yīng)根據(jù)業(yè)務(wù)定,例如:

(1) 要操作person表中id為10的記錄,構(gòu)建路徑如下:/person/10;
(2) 要操作person表中id為10 的記錄的name字段:person/10/name;
(3) 要操作person表中的所有記錄: /person;
(4) 要操作xxx表中的記錄: /xxx;
(5) 如果要操作的數(shù)據(jù)部是來自數(shù)據(jù)庫,而是來自文件、xml或網(wǎng)絡(luò)等其他存儲(chǔ)方式;

例如:要操作xml文件中person節(jié)點(diǎn)下的name節(jié)點(diǎn),構(gòu)建路徑如下:/person/name

如果要把一個(gè)字符串轉(zhuǎn)換成Uri,可以使用Uri類中的parse()方法:

Uri uri = Uri.parse("content://itcast.provider.personprovider/person"); 

2、UriMatcher 類使用介紹:

由于Uri代表了要操作的數(shù)據(jù),所以經(jīng)常需要解析Uri,并從Uri中獲取數(shù)據(jù),Android中提供 了兩個(gè)用于操作Uri的工具類:

* UriMatcher
* ContentUris

UriMatcher 類,用于匹配Uri,用法如下:

/* UriMathcer 類的用法 */ 
  public void uriMatcher(){ 
  /* 常量UriMatche.NO_MATCH 標(biāo)示部匹配任何路徑的返回碼 */ 
  UriMatcher sMatcher = new UriMatcher(UriMatcher.NO_MATCH); 
  
  /* 如果match()方法匹配content://cn.itcast.provider.personprovider/person 路徑, 
  * 返回匹配碼為 1 
  */ 
  /* 添加需要匹配的URL ,如果匹配就會(huì)返回匹配碼 */ 
  sMatcher.addURI("cn.itcast.provider.personprovider", "person", 1); 
  
  /* # 為通配符 *//* match():方法匹配:content://cn.itcast.provider.personprovider/person/230 
  * 路徑, 返回匹配碼2 
  * */ 
  sMatcher.addURI("cn.itcast.provider.personprovider", "person/#", 2); 
  
  /* 按上述添加的規(guī)則進(jìn)行匹配,不同的路徑匹配返回不同的匹配碼 *//* 下列路徑返回的匹配碼為 2 */ 
  int code = sMatcher.match(Uri.parse("content://cn.itcast.provider.personprovider/person/10")); 
  
  } 

        提示: 

    注冊需要匹配的Uri后,就可以使用sMatcher.match(uri)方法對(duì)輸入的Uri進(jìn)行匹配,如果匹配 

    就返回匹配碼,匹配碼是調(diào)用addURI()方法傳入的第三個(gè)參數(shù);

3、ContentUris 類的使用介紹:

ContentUris類,用于獲取Uri路徑后面的ID部分,有兩個(gè)比較實(shí)用的方法:

* withAppended(uri,id) 用于為路徑加上ID 部分; 

Uri uri = Uri.parse("content://cn.itcast.provider.personprovider/person"); 
/* 為路徑添加ID部分 */ 
Uri resultUri = ContentUris.withAppendedId(uri, 10); 
/* 添加后的值為:content://cn.itcast.provider.personprovider/person/10 */ 

* parseID(uri) 從路徑中獲取ID 部分; 

Uri uri = Uri.parse("content://cn.itcast.provider.personprovider/person/10"); 
/* 下列獲取到的結(jié)果是:10 */ 
long personid = ContentUris.parseId(uri); 

如有疑問請留言或者到本站社區(qū)交流討論,大家共同進(jìn)步,感謝 閱讀,希望能幫助到大家,謝謝大家對(duì)苯中的支持,

相關(guān)文章

  • 詳解Android App中的AsyncTask異步任務(wù)執(zhí)行方式

    詳解Android App中的AsyncTask異步任務(wù)執(zhí)行方式

    這篇文章主要介紹了Android App中的AsyncTask異步任務(wù)執(zhí)行方式,文中舉了一個(gè)打開網(wǎng)絡(luò)圖片的例子幫助大家直觀理解,需要的朋友可以參考下
    2016-04-04
  • 讀寫Android中assets目錄下的文件的方法詳解

    讀寫Android中assets目錄下的文件的方法詳解

    這篇文章主要介紹了讀寫Android中assets目錄下的文件的方法詳解,assets和res/raw工程目錄下都可以放一些文件,這些文件將被打包到APK中應(yīng)用使用,需要的朋友可以參考下
    2016-04-04
  • 當(dāng)ListView有Header時(shí) onItemClick里的position不正確的原因

    當(dāng)ListView有Header時(shí) onItemClick里的position不正確的原因

    這篇文章主要介紹了當(dāng)ListView有Header時(shí) onItemClick里的position不正確的原因的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07
  • Android中Intent與Bundle的使用詳解

    Android中Intent與Bundle的使用詳解

    這篇文章主要給大家總結(jié)介紹了關(guān)于Android中傳值Intent與Bundle的關(guān)系,文中通過示例代碼以及圖文介紹的非常詳細(xì),對(duì)各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧<BR>
    2022-11-11
  • 解決Android 源碼編譯錯(cuò)誤的問題

    解決Android 源碼編譯錯(cuò)誤的問題

    這篇文章主要介紹了解決Android 源碼編譯錯(cuò)誤的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • 快速處理ListView為空的情況

    快速處理ListView為空的情況

    下面小編就為大家?guī)硪黄焖偬幚鞮istView為空的情況。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-04-04
  • Android Service功能使用示例代碼

    Android Service功能使用示例代碼

    Service是Android中一個(gè)強(qiáng)大的組件,可以用來執(zhí)行需要在后臺(tái)進(jìn)行的任務(wù),通過本文的介紹了解如何在Kotlin中創(chuàng)建和使用Service,感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • Android9.0 SystemUI 網(wǎng)絡(luò)信號(hào)欄定制修改的流程解析

    Android9.0 SystemUI 網(wǎng)絡(luò)信號(hào)欄定制修改的流程解析

    這篇文章主要介紹了Android9.0 SystemUI 網(wǎng)絡(luò)信號(hào)欄定制修改的流程,本文通過圖文實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-11-11
  • 深入剖析Android系統(tǒng)中Service和IntentService的區(qū)別

    深入剖析Android系統(tǒng)中Service和IntentService的區(qū)別

    這篇文章主要介紹了Android系統(tǒng)中Service和IntentService的區(qū)別,與普通的服務(wù)相比,IntentService可以開啟單獨(dú)的線程來處理intent請求,需要的朋友可以參考下
    2016-04-04
  • Android樹形控件繪制方法

    Android樹形控件繪制方法

    這篇文章主要為大家詳細(xì)介紹了Android樹形控件繪制方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01

最新評(píng)論