天天看點

Android學習筆記--Content Provider 1

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,如需轉載請自行聯系原作者