最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

Content Provider 的簡(jiǎn)單介紹:

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

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

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

在android.provider 包下面找到一些android提供的ContentProvider;可以通過(guò)獲得ContentProvider,
查詢(xún)他們包含的數(shù)據(jù)(查詢(xún)的條件是:已經(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í)來(lái)找到它。路徑path,可以用來(lái)表示我們要操作的 數(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ù)部是來(lái)自數(shù)據(jù)庫(kù),而是來(lái)自文件、xml或網(wǎng)絡(luò)等其他存儲(chǔ)方式;

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

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

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

2、UriMatcher 類(lèi)使用介紹:

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

* UriMatcher
* ContentUris

UriMatcher 類(lèi),用于匹配Uri,用法如下:

/* UriMathcer 類(lèi)的用法 */ 
  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")); 
  
  } 

        提示: 

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

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

3、ContentUris 類(lèi)的使用介紹:

ContentUris類(lèi),用于獲取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); 

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

相關(guān)文章

  • Android 模仿iPhone列表數(shù)據(jù)View刷新動(dòng)畫(huà)詳解

    Android 模仿iPhone列表數(shù)據(jù)View刷新動(dòng)畫(huà)詳解

    本文主要介紹Android 模仿iPhone列表數(shù)據(jù)view 刷新動(dòng)畫(huà)的資料,這里整理詳細(xì)的資料,并附示例代碼及實(shí)現(xiàn)效果圖,有興趣的小伙伴可以參考下
    2016-09-09
  • Android網(wǎng)絡(luò)編程之UDP通信模型實(shí)例

    Android網(wǎng)絡(luò)編程之UDP通信模型實(shí)例

    這篇文章主要介紹了Android網(wǎng)絡(luò)編程之UDP通信模型實(shí)例,本文給出了服務(wù)端代碼和客戶(hù)端代碼,需要的朋友可以參考下
    2014-10-10
  • Android自定義View實(shí)現(xiàn)顏色選取器

    Android自定義View實(shí)現(xiàn)顏色選取器

    這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)顏色選取器 ,類(lèi)似SeekBar的方式通過(guò)滑動(dòng)選擇顏色,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Android自定義TimeButton實(shí)現(xiàn)倒計(jì)時(shí)按鈕

    Android自定義TimeButton實(shí)現(xiàn)倒計(jì)時(shí)按鈕

    這篇文章主要為大家詳細(xì)介紹了Android自定義TimeButton實(shí)現(xiàn)倒計(jì)時(shí)按鈕,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • Flutter實(shí)現(xiàn)底部導(dǎo)航欄

    Flutter實(shí)現(xiàn)底部導(dǎo)航欄

    這篇文章主要為大家詳細(xì)介紹了Flutter實(shí)現(xiàn)底部導(dǎo)航欄的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • Android底部菜單欄實(shí)現(xiàn)的實(shí)例代碼

    Android底部菜單欄實(shí)現(xiàn)的實(shí)例代碼

    這篇文章主要介紹了Android底部菜單欄實(shí)現(xiàn)的實(shí)例代碼,本文通過(guò)使用RadioGroup來(lái)實(shí)現(xiàn)底部導(dǎo)航菜單欄。現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Android BitmapUtils工具類(lèi)使用詳解

    Android BitmapUtils工具類(lèi)使用詳解

    這篇文章主要為大家詳細(xì)介紹了Android BitmapUtils工具類(lèi)的使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Android函數(shù)抽取殼的實(shí)現(xiàn)代碼

    Android函數(shù)抽取殼的實(shí)現(xiàn)代碼

    很早之前就想寫(xiě)這類(lèi)的殼,最近終于把它做出來(lái)了,取名為dpt,下面把代碼分享出來(lái),對(duì)Android函數(shù)抽取殼的實(shí)現(xiàn)代碼感興趣的朋友一起看看吧
    2022-01-01
  • Flutter構(gòu)建自定義Widgets的全過(guò)程記錄

    Flutter構(gòu)建自定義Widgets的全過(guò)程記錄

    在Flutter實(shí)際開(kāi)發(fā)中,大家可能會(huì)遇到flutter框架中提供的widget達(dá)不到我們想要的效果,這時(shí)就需要我們?nèi)プ远xwidget,下面這篇文章主要給大家介紹了關(guān)于Flutter構(gòu)建自定義Widgets的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • Android學(xué)習(xí)之AppWidget高級(jí)效果

    Android學(xué)習(xí)之AppWidget高級(jí)效果

    這篇文章主要為大家詳細(xì)介紹了Android學(xué)習(xí)之AppWidget高級(jí)效果的相關(guān)資料,感興趣的小伙伴們可以參考一下
    2016-08-08

最新評(píng)論

五莲县| 宜春市| 略阳县| 罗平县| 正蓝旗| 恭城| 汉中市| 柏乡县| 秦皇岛市| 杭锦后旗| 哈巴河县| 原平市| 雷波县| 思南县| 工布江达县| 北流市| 扶沟县| 莲花县| 呼图壁县| 胶南市| 金昌市| 新乡县| 子长县| 星子县| 蓝山县| 棋牌| 滁州市| 贡山| 安陆市| 渝北区| 读书| 新源县| 故城县| 嘉兴市| 巴林右旗| 汝州市| 清丰县| 五莲县| 朝阳区| 乐业县| 桂平市|