Android中使用Content Providers进行数据共享的实例[页8]
2023-08-23次
javapublic class StudentProvider extends ContentProvider {
// Content Provider授权码
public static final String AUTHORITY = "com.example.provider.student";
// 数据库表格名称
public static final String TABLE_NAME = "students";
// 数据库表格字段
public static final String _ID = "_id";
public static final String NAME = "name";
public static final String AGE = "age";
public static final String GENDER = "gender";
// 数据库帮助类
private DatabaseHelper mDatabaseHelper;
@Override
public boolean onCreate() {
mDatabaseHelper = new DatabaseHelper(getContext());
return true;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
SQLiteDatabase db = mDatabaseHelper.getReadableDatabase();
Cursor cursor = db.query(TABLE_NAME, projection, selection, selectionArgs, null, null, sortOrder);
cursor.setNotificationUri(getContext().getContentResolver(), uri);
return cursor;
}
@Override
public Uri insert(Uri uri, ContentValues values) {
SQLiteDatabase db = mDatabaseHelper.getWritableDatabase();
long id = db.insert(TABLE_NAME, null, values);
getContext().getContentResolver().notifyChange(uri, null);
return ContentUris.withAppendedId(uri, id);
}
@Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
SQLiteDatabase db = mDatabaseHelper.getWritableDatabase();
int count = db.update(TABLE_NAME, values, selection, selectionArgs);
getContext().getContentResolver().notifyChange(uri, null);
return count;
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
SQLiteDatabase db = mDatabaseHelper.getWritableDatabase();
int count = db.delete(TABLE_NAME, selection, selectionArgs);
getContext().getContentResolver().notifyChange(uri,
除了系统预定义的Content Providers,开发者也可以自己创建自定义Content Provider来进行数据共享。下面以一个简单的实例来介绍如何创建自定义Content Provider。