中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android 中ContentProvider如何使用

發布時間:2021-06-26 17:13:13 來源:億速云 閱讀:303 作者:Leah 欄目:移動開發

本篇文章為大家展示了Android 中ContentProvider如何使用,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

Content Provider 的簡單介紹:

* Android中的Content Provider 機制可支持在多個應用中存儲和讀取數據。這也是跨應用 

  共享數據的唯一方式。在Android系統中,沒有一個公共的內存區域,供多個應用共享存儲數據;

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

在android.provider 包下面找到一些android提供的ContentProvider;可以通過獲得ContentProvider,
查詢他們包含的數據(查詢的條件是:已經獲得適當的讀取權限);

1、Uri的介紹:

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

解析:

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

1.1: ContentProvider(內容提供者)的scheme 已經由Android所規定,scheme為 content://主機名(或叫Authority)用于唯一標識這個ContentProvider,外 部調用者可以根據這個標識來找到它。路徑path,可以用來表示我們要操作的 數據,路徑的構建應根據業務定,例如:

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

例如:要操作xml文件中person節點下的name節點,構建路徑如下:/person/name

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

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

2、UriMatcher 類使用介紹:

由于Uri代表了要操作的數據,所以經常需要解析Uri,并從Uri中獲取數據,Android中提供 了兩個用于操作Uri的工具類:

* UriMatcher
* ContentUris

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

/* UriMathcer 類的用法 */ 
  public void uriMatcher(){ 
  /* 常量UriMatche.NO_MATCH 標示部匹配任何路徑的返回碼 */ 
  UriMatcher sMatcher = new UriMatcher(UriMatcher.NO_MATCH); 
  
  /* 如果match()方法匹配content://cn.itcast.provider.personprovider/person 路徑, 
  * 返回匹配碼為 1 
  */ 
  /* 添加需要匹配的URL ,如果匹配就會返回匹配碼 */ 
  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); 
  
  /* 按上述添加的規則進行匹配,不同的路徑匹配返回不同的匹配碼 *//* 下列路徑返回的匹配碼為 2 */ 
  int code = sMatcher.match(Uri.parse("content://cn.itcast.provider.personprovider/person/10")); 
  
  }

        提示: 

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

    就返回匹配碼,匹配碼是調用addURI()方法傳入的第三個參數;

3、ContentUris 類的使用介紹:

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

* 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"); 
/* 下列獲取到的結果是:10 */ 
long personid = ContentUris.parseId(uri);

上述內容就是Android 中ContentProvider如何使用,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

湛江市| 九龙城区| 禄劝| 霍州市| 象山县| 大城县| 张掖市| 长顺县| 昌邑市| 泗阳县| 宕昌县| 万安县| 永平县| 静安区| 个旧市| 金平| 绥芬河市| 来凤县| 道孚县| 辛集市| 商城县| 沙洋县| 苍溪县| 乡城县| 田阳县| 尼玛县| 隆昌县| 宁远县| 新建县| 泗洪县| 旬阳县| 梁河县| 松原市| 江城| 保靖县| 定州市| 澳门| 曲阳县| 剑河县| 庆安县| 临泉县|