MicrosoftInternetExplorer402DocumentNotSpecified7.8Normal0
1 . Content Provider 基本概念
A: Content Provider提供為存儲和擷取資料提供了統一的接口
B: 使用Content Provider可以在不同的應用程式之間共享資料
C: Android為常見的一些資料提供了Content Provider(包括音頻 , 視訊,圖檔和通訊錄等等)
2 . Uri
A:每一個ContnetProvider都擁有一個公共的URI,這個URI用于表示這個ContnetProvider所提供的資料
B: Android所提供的ContentProvider都存放在android.provider包當中
3 . Contnet Provider 實作方法
Query
Insert
Update
Delete
getType
onCreate
4 . 實作ContentProvider的過程
A: 定義一個Content_URI 常量
B: 定義一個類 , 繼承ContentProvider
C: 實作query , insert update,delete getType,和onCreate方法;
D: 在AnroidManifest.xml當中進行聲明;
例 : // DatabaseHelper所為一個通路SQLite的助手類, 提供兩個方面的功能
// 第一, getReadableDatabase() 和 getWritableDatabasr() 可以獲得SQLiteDatabase對象
// 第二, 提供onCreate 和 onUpgrade 兩個回調函數 , 允許我們在建立和更新資料庫時, 進行操作
例 : public class DatabaseHelper extends SQLiteOpenHelper {
// 資料庫版本号
Private static final int VERSION = 1;
// 必須的構造函數
Public DatabaseHelper (Context context , String name , CursorFactory factory , int version) {
Super(context , name , factory , version);
}
Public DatabaseHelper (Context context , String name , int version) {
Super(context , name , null , version);
Public DatabaseHelper (Context context , String name) {
Super(context , name , null , VERSION);
Public void onCreate(SQLiteDatabase db) {
System.out.println("create a database");
// 拼出了建表的語句
db..execSQL("create table" + FirstMetaData.USER_TABLE_NAME
+ "(" + FirstMetaData.UserTableMetaData._ID
+ "INTEGER PRIMARY KEY AUTOINCREMENT,"
+ FirstMetaData.UserTableMetaData.USER_NAME
+ " varchar(20));";
Public void onUpgrade(SQLiteDatabase db) {
System.out.println("update a database");
ContentProviderActivity 例 : 1 . 聲明控件對象(略)
2 . 獲得控件對象(略)
3 . 綁定事件(略)
4 . 建立監聽器對象
// insert
Public void onClick(View v) {
ContentValues values = new ContentValues ();
Values.put(FirstMetaData.UserTableMetaData.USER_NAME , "zhangsan");
Uri uri = getContentesolver().insert(FirstMetaData.UserTableMetaData.CONTENT_URI , values);
System.out.println("uri ---->" + uri.toString());
// query
Cursor c= getContentResolver().query(
FirstMetaData.UserTableMetaData.CONTENT_URI , null , null , null , null
) ;
While(c.moveToNext()) {
System.out.println(c.getString(c.getColumnIndex(UserTableMeatData.USER_NAME)));
本文轉自My_King1 51CTO部落格,原文連結:http://blog.51cto.com/apprentice/1360568,如需轉載請自行聯系原作者