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的应用实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql视图存储_Mysql 视图、存
- 下一篇: java如何阻塞和同步_同步与异步,阻塞