日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android content item,Android中ContentProvider的应用实例

發布時間:2025/3/12 Android 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android content item,Android中ContentProvider的应用实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、ContentProvider簡介

當應用繼承ContentProvider類,并重寫該類用于提供數據和存儲數據的方法,就可以向其他應用共享其數據。雖然使用其他方法也可以對外共享數據,但數據訪問方式會因數據存儲的方式而不同,如:采用文件方式對外共享數據,需要進行文件操作讀寫數據;采用sharedpreferences共享數據,需要使用sharedpreferences?API讀寫數據。而使用ContentProvider共享數據的好處是統一了數據訪問方式。

二、Uri類簡介

Uri代表了要操作的數據,Uri主要包含了兩部分信息:1.需要操作的ContentProvider?,2.對ContentProvider中的什么數據進行操作,一個Uri由以下幾部分組成:

1.scheme:ContentProvider(內容提供者)的scheme已經由Android所規定為:content://。

2.主機名(或Authority):用于唯一標識這個ContentProvider,外部調用者可以根據這個標識來找到它。

3.路徑(path):可以用來表示我們要操作的數據,路徑的構建應根據業務而定,如下:

??要操作contact表中id為10的記錄,可以構建這樣的路徑:/contact/10

??要操作contact表中id為10的記錄的name字段,?contact/10/name

??要操作contact表中的所有記錄,可以構建這樣的路徑:/contact

要操作的數據不一定來自數據庫,也可以是文件等他存儲方式,如下:

要操作xml文件中contact節點下的name節點,可以構建這樣的路徑:/contact/name

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

Uri?uri?=?Uri.parse("content://com.changcheng.provider.contactprovider/contact")

三、UriMatcher、ContentUrist和ContentResolver簡介

因為Uri代表了要操作的數據,所以我們很經常需要解析Uri,并從Uri中獲取數據。Android系統提供了兩個用于操作Uri的工具類,分別為UriMatcher?和ContentUris?。掌握它們的使用,會便于我們的開發工作。

UriMatcher:用于匹配Uri,它的用法如下:

1.首先把你需要匹配Uri路徑全部給注冊上,如下:

//常量UriMatcher.NO_MATCH表示不匹配任何路徑的返回碼(-1)。

UriMatcher?uriMatcher?=?new?UriMatcher(UriMatcher.NO_MATCH);

//如果match()方法匹配content://com.changcheng.sqlite.provider.contactprovider/contact路徑,返回匹配碼為1

uriMatcher.addURI(“com.changcheng.sqlite.provider.contactprovider”,?“contact”,?1);//添加需要匹配uri,如果匹配就會返回匹配碼

//如果match()方法匹配?content://com.changcheng.sqlite.provider.contactprovider/contact/230路徑,返回匹配碼為2

uriMatcher.addURI(“com.changcheng.sqlite.provider.contactprovider”,?“contact/#”,?2);//#號為通配符

2.注冊完需要匹配的Uri后,就可以使用uriMatcher.match(uri)方法對輸入的Uri進行匹配,如果匹配就返回匹配碼,匹配碼是調用addURI()方法傳入的第三個參數,假設匹配content://com.changcheng.sqlite.provider.contactprovider/contact路徑,返回的匹配碼為1。

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

??withAppendedId(uri,?id)用于為路徑加上ID部分

??parseId(uri)方法用于從路徑中獲取ID部分

ContentResolver:當外部應用需要對ContentProvider中的數據進行添加、刪除、修改和查詢操作時,可以使用ContentResolver?類來完成,要獲取ContentResolver?對象,可以使用Activity提供的getContentResolver()方法。?ContentResolver使用insert、delete、update、query方法,來操作數據。

四、ContentProvider示例程序

Manifest.xml中的代碼:

需要在中為provider進行注冊!!!!

首先定義一個數據庫的工具類:

然后創建一個數據庫:

接著創建一個Myprovider.java對數據庫的接口進行包裝:模擬一個新的程序,然后將上面查詢的代碼加到新的程序當中!這樣就模擬了contentprovider的數據共享功能了!

新建個工程:TestProvider

創建一個測試的activity

此程序就能實現共享數據查詢了!

注:新建的程序中的manifest.xml中不需要對provider進行注冊,直接運行就行,否則會報錯!

總結

以上是生活随笔為你收集整理的android content item,Android中ContentProvider的应用实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。