一.Content Provider的概念介紹
Content Providers是所有應用程序之間數據存儲和檢索的橋梁,它使得各個應用程序之間實現數據共享。是應用程序間共享數據的唯一途徑。Content Provider 主要的功能就是存儲並檢索數據以及向其他應用程序提供訪問數據的接口。其中包括添加,刪除,查詢,更新等操作。
在Content Provider使用過程中,還需要借用ContentResolver對象間接來操作ContentProvider來獲取數據。ContentResolver通過應用程序的getContentResolver()方法獲得。一般情況下,ContentResolver是單實例的,但是可以有多個ContentResolver在不用的應用程序和不同的進程之間和ContentResolver交互。
二.Content Provider的簡介
1.Content Provider的常用方法
- //查詢
- query(Uri, String[], String, String[], String);
- //插入
- insert(Uri, ContentValues);
- //更新
- update(Uri, ContentValues, String, String[]);
- //刪除
- delete(Uri, String, String[]);
- //獲得MIME數據類型
- getType(Uri);
2.數據模型
Content Provider 將其存儲的數據以數據表的形式提供給訪問者,在數據表中每一行為一條記錄,每一列為具有特定類型和意義的數據。每一條數據記錄都包括一個 "_ID" 數值字段,改字段唯一標識一條數據。
_ID
NUMBER
NUMBER_KEY
LABEL
NAME
TYPE
13
(425) 555 6677
425 555 6677
Bully Pulpit
TYPE_WORK
44
(212) 555-1234
212 555 1234
NY apartment
Alan Vain
TYPE_HOME
45
(212) 555-6657
212 555 6657
Downtown office
Alan Vain
TYPE_MOBILE
53
201.555.4433
201 555 4433
Love Nest
Rex Cars
TYPE_HOME
3.URI
URI,每一個Content Provider 都對外提供一個能夠唯一標識自己數據集(data set)的URI, 如果一個Content Provider管理多個數據集,其將會為每個數據集分配一個獨立的URI。Content Provider就是通過URI對象來共享其數據的。
URI的格式圖如下:
650) this.width=650;" height=62>
各個部分的組成:
A:標准前綴,是固定的,"content://"是用來標識數據是由Content Provider管理的 schema。
B:URI的標識,它定義了是哪個Content Provider提供這些數據。對於第三方應用程序,為了保證URI標識的唯一性,它必須是一個完整的、小寫的類名。這個標識在 元素的 authorities屬性中說明:一般是定義該ContentProvider的包.類的名稱
C:需要訪問的數據字段名稱。
D:如果URI中包含表示需要獲取的記錄的_ID;如何有D部分,則就返回該_ID對應的數據,否則表示返回整張表的數據