ContentProvider是一个抽象类,可以理解为一个特殊的存储数据的类型,它提供了一套标准的接口来获取和操作数据。可以把数据封装到ContentProvider 中,从而是这些数据可以被其他的应用程序所共享。搭建起了所有应用程序之间数据交换的桥梁。
二、ContentProvider的创建过程
1.创建一个类继承ContentProvider,实现其所有的抽象方法。
------------------------------------------------------------------------------------------------------------------------
public class MyProvider extends ContentProvider{
@Override
public boolean onCreate() {
// TODO Auto-generated method stub
return false;
}
/**
* 实现删除动作,需要区分该uri是一个具体的row id还是代表多条记录。如果是单挑记录,则需要解析出id好,添加在sql语句中。执行完后要
* 调用getContentResolver().notifyChange(uri, null)通知给该uri的注册者。
* @param uri The full URI to query, including a row ID (if a specific record is requested).
* @ selection An optional restriction to apply to rows when deleting.
* return The number of rows affected.
*/
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
// TODO Auto-generated method stub
return 0;
}
/**
* 返回给定uri所对应数据的mimeType类型,对于单条记录,mimeType以"vnd.android.cursor.item/"开头;对于多条记录,mimeType则以"vnd.android.cursor.dir/"开头。
* @param uri the URI to query.
* @return a MIME type string, or {@code null} if there is no type.
*/
@Override
public String getType(Uri uri) {
// TODO Auto-generated method stub
return null;
}
/**
* 插入一条新的记录,该方法可以在多个线程中被调用.一般在插入后要调用getContext().getContentResolver().notifyChange(uri, null)通知给该uri的注册者。
* @param uri The content:// URI of the insertion request.
* @param values A set of column_name/value pairs to add to the database.
* @return The URI for the newly inserted item.
*/
@Override
public Uri insert(Uri uri, ContentValues values) {
// TODO Auto-generated method stub
return null;
}
/**
* 处理客户端(进程或线程)的查询请求,并返回一个cursor。该方法由ContentResolver调用。
*/
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
String sortOrder) {
// TODO Auto-generated method stub
return null;
}
/**
* 该uri对应的多行(也可以只有一行)中,所有满足selection和selectionArgs条件的行,都将使与ContentValues中的key对应的属性值得到更新。执行完后要
* 调用getContentResolver().notifyChange(uri, null)通知给该uri的注册者。
* @param uri 要查询的uri,
*/
@Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
// TODO Auto-generated method stub
return 0;
}
}
--------------------------------------------------------------------------------------------------------------------------------