java Copy Code /** * 内容提供器初始化方法 * @return 初始化是否成功 */ @Override public boolean onCreate() { // 获取数据库帮助类实例 mHelper = NotesDatabaseHelper.getInstance(getContext()); return true; } /** * 查询方法实现 * @param uri 请求URI * @param projection 查询列 * @param selection 查询条件 * @param selectionArgs 条件参数 * @param sortOrder 排序方式 * @return 查询结果游标 */ @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { // 获取可读数据库实例 SQLiteDatabase db = mHelper.getReadableDatabase(); // 根据URI类型进行不同处理 switch (mMatcher.match(uri)) { case URI_NOTE: // 查询整个note表 return db.query(TABLE.NOTE, projection, selection, selectionArgs, null, null, sortOrder); case URI_NOTE_ITEM: // 查询单条note记录 long id = ContentUris.parseId(uri); String where = NoteColumns.ID + "=" + id; if (!TextUtils.isEmpty(selection)) { where += " AND (" + selection + ")"; } return db.query(TABLE.NOTE, projection, where, selectionArgs, null, null, sortOrder); // 其他URI类型处理... default: throw new IllegalArgumentException("Unknown URI " + uri); } } /** * 插入方法实现 * @param uri 目标URI * @param values 插入值 * @return 新记录的URI */ @Override public Uri insert(Uri uri, ContentValues values) { // 获取可写数据库实例 SQLiteDatabase db = mHelper.getWritableDatabase(); long dataId = 0, noteId = 0; // 插入成功后返回的新URI Uri newUri = null; // 开启事务保证数据一致性 db.beginTransaction(); try { // 根据URI类型处理不同表的插入 switch (mMatcher.match(uri)) { case URI_NOTE: // 插入note表记录 noteId = db.insert(TABLE.NOTE, null, values); newUri = ContentUris.withAppendedId(uri, noteId); break; case URI_DATA: // 插入data表记录 dataId = db.insert(TABLE.DATA, null, values); newUri = ContentUris.withAppendedId(uri, dataId); break; default: throw new IllegalArgumentException("Unknown URI " + uri); } db.setTransactionSuccessful(); } finally { db.endTransaction(); } // 通知数据变化 getContext().getContentResolver().notifyChange(uri, null); return newUri; } /** * 更新方法实现 * @param uri 目标URI * @param values 更新值 * @param selection 更新条件 * @param selectionArgs 条件参数 * @return 受影响的行数 */ @Override public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { // 实现逻辑与query/insert类似... } /** * 删除方法实现 * @param uri 目标URI * @param selection 删除条件 * @param selectionArgs 条件参数 * @return 删除的行数 */ @Override public int delete(Uri uri, String selection, String[] selectionArgs) { // 实现逻辑与query/insert类似... } /** * 获取MIME类型 * @param uri 目标URI * @return 对应的MIME类型字符串 */ @Override public String getType(Uri uri) { // 根据URI返回对应的MIME类型... }