From aec421bbfff736f5d52ba6fc42894ee415615705 Mon Sep 17 00:00:00 2001 From: iris <1718923346@qq.com> Date: Wed, 14 May 2025 15:29:52 +0800 Subject: [PATCH] xiaominote --- ...便签开源代码的泛读报告(1).docx | Bin 0 -> 179903 bytes doc/运行结果图刘泊含.jpg | Bin 0 -> 45158 bytes src/data/Contact.java | 94 ++++ src/data/Notes.java | 332 +++++++++++++ src/data/NotesDatabaseHelper.java | 460 ++++++++++++++++++ src/data/NotesProvider.java | 411 ++++++++++++++++ 6 files changed, 1297 insertions(+) create mode 100644 doc/小米便签开源代码的泛读报告(1).docx create mode 100644 doc/运行结果图刘泊含.jpg create mode 100644 src/data/Contact.java create mode 100644 src/data/Notes.java create mode 100644 src/data/NotesDatabaseHelper.java create mode 100644 src/data/NotesProvider.java diff --git a/doc/小米便签开源代码的泛读报告(1).docx b/doc/小米便签开源代码的泛读报告(1).docx new file mode 100644 index 0000000000000000000000000000000000000000..ac870238015a51e607c93ac867f1836121701fda GIT binary patch literal 179903 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

i!hAPx0yX*WyJkK!|Q!gsC|#A>b+;KmWxiG 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 K%}Qa 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%0ACy7Yu_fSi{8E<;N|uh?4QbOZwQ~&Q7ZHk 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 sContactCache; + // 日志标签 + private static final String TAG = "Contact"; + + // 查询联系人数据库的SQL选择语句 + // 用于查找电话号码匹配且具有正确MIME类型的联系人 + private static final String CALLER_ID_SELECTION = "PHONE_NUMBERS_EQUAL(" + Phone.NUMBER + + ",?) AND " + Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE + "'" + + " AND " + Data.RAW_CONTACT_ID + " IN " + + "(SELECT raw_contact_id " + + " FROM phone_lookup" + + " WHERE min_match = '+')"; + + /** + * 根据电话号码获取联系人姓名 + * @param context 应用上下文 + * @param phoneNumber 要查询的电话号码 + * @return 联系人姓名,如果未找到则返回null + */ + public static String getContact(Context context, String phoneNumber) { + // 如果缓存未初始化,则初始化 + if(sContactCache == null) { + sContactCache = new HashMap(); + } + + // 如果缓存中已有该号码,直接返回缓存结果 + if(sContactCache.containsKey(phoneNumber)) { + return sContactCache.get(phoneNumber); + } + + // 准备查询条件:替换最小匹配长度参数 + String selection = CALLER_ID_SELECTION.replace("+", + PhoneNumberUtils.toCallerIDMinMatch(phoneNumber)); + + // 查询联系人数据库 + Cursor cursor = context.getContentResolver().query( + Data.CONTENT_URI, // 查询的URI + new String [] { Phone.DISPLAY_NAME }, // 要返回的列(联系人姓名) + selection, // 查询条件 + new String[] { phoneNumber }, // 查询参数 + null); // 排序方式 + + // 处理查询结果 + if (cursor != null && cursor.moveToFirst()) { + try { + // 获取第一条结果的联系人姓名 + String name = cursor.getString(0); + // 将结果存入缓存 + sContactCache.put(phoneNumber, name); + return name; + } catch (IndexOutOfBoundsException e) { + // 处理异常情况 + Log.e(TAG, "获取游标字符串错误 " + e.toString()); + return null; + } finally { + // 确保关闭游标 + cursor.close(); + } + } else { + // 没有找到匹配的联系人 + Log.d(TAG, "未找到与号码匹配的联系人:" + phoneNumber); + return null; + } + } + } \ No newline at end of file diff --git a/src/data/Notes.java b/src/data/Notes.java new file mode 100644 index 0000000..ff06180 --- /dev/null +++ b/src/data/Notes.java @@ -0,0 +1,332 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + package net.micode.notes.data; + + import android.net.Uri; + + // 定义 Notes 类,包含笔记和文件夹的常量及相关信息 + public class Notes { + // 内容提供者的授权字符串 + public static final String AUTHORITY = "micode_notes"; + // 日志标签 + public static final String TAG = "Notes"; + // 笔记类型 + public static final int TYPE_NOTE = 0; + // 文件夹类型 + public static final int TYPE_FOLDER = 1; + // 系统类型 + public static final int TYPE_SYSTEM = 2; + + /** + * 以下 ID 是系统文件夹的标识符 + * {@link Notes#ID_ROOT_FOLDER } 是默认文件夹 + * {@link Notes#ID_TEMPARAY_FOLDER } 用于存放不属于任何文件夹的笔记 + * {@link Notes#ID_CALL_RECORD_FOLDER} 用于存储通话记录 + */ + // 根文件夹的 ID + public static final int ID_ROOT_FOLDER = 0; + // 临时文件夹的 ID + public static final int ID_TEMPARAY_FOLDER = -1; + // 通话记录文件夹的 ID + public static final int ID_CALL_RECORD_FOLDER = -2; + // 回收站文件夹的 ID + public static final int ID_TRASH_FOLER = -3; + + // 用于传递提醒日期的意图额外数据键 + public static final String INTENT_EXTRA_ALERT_DATE = "net.micode.notes.alert_date"; + // 用于传递背景颜色 ID 的意图额外数据键 + public static final String INTENT_EXTRA_BACKGROUND_ID = "net.micode.notes.background_color_id"; + // 用于传递小部件 ID 的意图额外数据键 + public static final String INTENT_EXTRA_WIDGET_ID = "net.micode.notes.widget_id"; + // 用于传递小部件类型的意图额外数据键 + public static final String INTENT_EXTRA_WIDGET_TYPE = "net.micode.notes.widget_type"; + // 用于传递文件夹 ID 的意图额外数据键 + public static final String INTENT_EXTRA_FOLDER_ID = "net.micode.notes.folder_id"; + // 用于传递通话日期的意图额外数据键 + public static final String INTENT_EXTRA_CALL_DATE = "net.micode.notes.call_date"; + + // 无效小部件类型 + public static final int TYPE_WIDGET_INVALIDE = -1; + // 2x 大小的小部件类型 + public static final int TYPE_WIDGET_2X = 0; + // 4x 大小的小部件类型 + public static final int TYPE_WIDGET_4X = 1; + + // 定义数据常量的静态内部类 + public static class DataConstants { + // 文本笔记的内容项类型 + public static final String NOTE = TextNote.CONTENT_ITEM_TYPE; + // 通话笔记的内容项类型 + public static final String CALL_NOTE = CallNote.CONTENT_ITEM_TYPE; + } + + /** + * 用于查询所有笔记和文件夹的 Uri + */ + // 查询所有笔记和文件夹的 Uri + public static final Uri CONTENT_NOTE_URI = Uri.parse("content://" + AUTHORITY + "/note"); + + /** + * 用于查询数据的 Uri + */ + // 查询数据的 Uri + public static final Uri CONTENT_DATA_URI = Uri.parse("content://" + AUTHORITY + "/data"); + + // 笔记列的接口,定义了笔记表的列名 + public interface NoteColumns { + /** + * 行的唯一 ID + *

类型: INTEGER (long)

+ */ + // 行的唯一 ID + public static final String ID = "_id"; + + /** + * 笔记或文件夹的父 ID + *

类型: INTEGER (long)

+ */ + // 父 ID + public static final String PARENT_ID = "parent_id"; + + /** + * 笔记或文件夹的创建日期 + *

类型: INTEGER (long)

+ */ + // 创建日期 + public static final String CREATED_DATE = "created_date"; + + /** + * 最新修改日期 + *

类型: INTEGER (long)

+ */ + // 最新修改日期 + public static final String MODIFIED_DATE = "modified_date"; + + /** + * 提醒日期 + *

类型: INTEGER (long)

+ */ + // 提醒日期 + public static final String ALERTED_DATE = "alert_date"; + + /** + * 文件夹名称或笔记的文本内容 + *

类型: TEXT

+ */ + // 摘要 + public static final String SNIPPET = "snippet"; + + /** + * 笔记的小部件 ID + *

类型: INTEGER (long)

+ */ + // 小部件 ID + public static final String WIDGET_ID = "widget_id"; + + /** + * 笔记的小部件类型 + *

类型: INTEGER (long)

+ */ + // 小部件类型 + public static final String WIDGET_TYPE = "widget_type"; + + /** + * 笔记的背景颜色 ID + *

类型: INTEGER (long)

+ */ + // 背景颜色 ID + public static final String BG_COLOR_ID = "bg_color_id"; + + /** + * 对于文本笔记,没有附件;对于多媒体笔记,至少有一个附件 + *

类型: INTEGER

+ */ + // 是否有附件 + public static final String HAS_ATTACHMENT = "has_attachment"; + + /** + * 文件夹中的笔记数量 + *

类型: INTEGER (long)

+ */ + // 笔记数量 + public static final String NOTES_COUNT = "notes_count"; + + /** + * 文件类型:文件夹或笔记 + *

类型: INTEGER

+ */ + // 类型 + public static final String TYPE = "type"; + + /** + * 最后同步 ID + *

类型: INTEGER (long)

+ */ + // 同步 ID + public static final String SYNC_ID = "sync_id"; + + /** + * 标记本地是否修改 + *

类型: INTEGER

+ */ + // 本地修改标记 + public static final String LOCAL_MODIFIED = "local_modified"; + + /** + * 移动到临时文件夹之前的原始父 ID + *

类型 : INTEGER

+ */ + // 原始父 ID + public static final String ORIGIN_PARENT_ID = "origin_parent_id"; + + /** + * Google 任务 ID + *

类型 : TEXT

+ */ + // Google 任务 ID + public static final String GTASK_ID = "gtask_id"; + + /** + * 版本代码 + *

类型 : INTEGER (long)

+ */ + // 版本代码 + public static final String VERSION = "version"; + } + + // 数据列的接口,定义了数据表的列名 + public interface DataColumns { + /** + * 行的唯一 ID + *

类型: INTEGER (long)

+ */ + // 行的唯一 ID + public static final String ID = "_id"; + + /** + * 该行所代表项的 MIME 类型 + *

类型: Text

+ */ + // MIME 类型 + public static final String MIME_TYPE = "mime_type"; + + /** + * 此数据所属笔记的引用 ID + *

类型: INTEGER (long)

+ */ + // 笔记 ID + public static final String NOTE_ID = "note_id"; + + /** + * 笔记或文件夹的创建日期 + *

类型: INTEGER (long)

+ */ + // 创建日期 + public static final String CREATED_DATE = "created_date"; + + /** + * 最新修改日期 + *

类型: INTEGER (long)

+ */ + // 最新修改日期 + public static final String MODIFIED_DATE = "modified_date"; + + /** + * 数据的内容 + *

类型: TEXT

+ */ + // 内容 + public static final String CONTENT = "content"; + + /** + * 通用数据列,含义由 {@link #MIMETYPE} 特定,用于整数数据类型 + *

类型: INTEGER

+ */ + // 通用数据列 1 + public static final String DATA1 = "data1"; + + /** + * 通用数据列,含义由 {@link #MIMETYPE} 特定,用于整数数据类型 + *

类型: INTEGER

+ */ + // 通用数据列 2 + public static final String DATA2 = "data2"; + + /** + * 通用数据列,含义由 {@link #MIMETYPE} 特定,用于 TEXT 数据类型 + *

类型: TEXT

+ */ + // 通用数据列 3 + public static final String DATA3 = "data3"; + + /** + * 通用数据列,含义由 {@link #MIMETYPE} 特定,用于 TEXT 数据类型 + *

类型: TEXT

+ */ + // 通用数据列 4 + public static final String DATA4 = "data4"; + + /** + * 通用数据列,含义由 {@link #MIMETYPE} 特定,用于 TEXT 数据类型 + *

类型: TEXT

+ */ + // 通用数据列 5 + public static final String DATA5 = "data5"; + } + + // 文本笔记的静态内部类,实现了 DataColumns 接口 + public static final class TextNote implements DataColumns { + /** + * 模式,用于指示文本是否处于复选列表模式 + *

类型: Integer 1:复选列表模式 0: 正常模式

+ */ + // 模式 + public static final String MODE = DATA1; + // 复选列表模式 + public static final int MODE_CHECK_LIST = 1; + // 文本笔记的内容类型 + public static final String CONTENT_TYPE = "vnd.android.cursor.dir/text_note"; + // 文本笔记的内容项类型 + public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/text_note"; + // 文本笔记的 Uri + public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/text_note"); + } + + // 通话笔记的静态内部类,实现了 DataColumns 接口 + public static final class CallNote implements DataColumns { + /** + * 此记录的通话日期 + *

类型: INTEGER (long)

+ */ + // 通话日期 + public static final String CALL_DATE = DATA1; + + /** + * 此记录的电话号码 + *

类型: TEXT

+ */ + // 电话号码 + public static final String PHONE_NUMBER = DATA3; + // 通话笔记的内容类型 + public static final String CONTENT_TYPE = "vnd.android.cursor.dir/call_note"; + // 通话笔记的内容项类型 + public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/call_note"; + // 通话笔记的 Uri + public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/call_note"); + } + } + \ No newline at end of file diff --git a/src/data/NotesDatabaseHelper.java b/src/data/NotesDatabaseHelper.java new file mode 100644 index 0000000..60978c2 --- /dev/null +++ b/src/data/NotesDatabaseHelper.java @@ -0,0 +1,460 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + package net.micode.notes.data; + + import android.content.ContentValues; + import android.content.Context; + import android.database.sqlite.SQLiteDatabase; + import android.database.sqlite.SQLiteOpenHelper; + import android.util.Log; + + import net.micode.notes.data.Notes.DataColumns; + import net.micode.notes.data.Notes.DataConstants; + import net.micode.notes.data.Notes.NoteColumns; + + // 笔记数据库辅助类,继承自SQLiteOpenHelper,用于管理数据库的创建、升级和相关操作 + public class NotesDatabaseHelper extends SQLiteOpenHelper { + // 数据库名称 + private static final String DB_NAME = "note.db"; + // 数据库版本号 + private static final int DB_VERSION = 4; + + // 定义数据库表名的接口 + public interface TABLE { + // 笔记表的名称 + public static final String NOTE = "note"; + // 数据表的名称 + public static final String DATA = "data"; + } + + // 日志标签,用于在日志输出中标识该类相关信息 + private static final String TAG = "NotesDatabaseHelper"; + + // 单例实例,用于确保整个应用中只有一个数据库辅助类实例 + private static NotesDatabaseHelper mInstance; + + // 创建笔记表的SQL语句 + private static final String CREATE_NOTE_TABLE_SQL = + "CREATE TABLE " + TABLE.NOTE + "(" + + // 笔记的唯一标识ID,整数类型,作为主键 + NoteColumns.ID + " INTEGER PRIMARY KEY," + + // 父笔记或文件夹的ID,整数类型,不能为空,默认值为0 + NoteColumns.PARENT_ID + " INTEGER NOT NULL DEFAULT 0," + + // 提醒日期,整数类型,不能为空,默认值为0 + NoteColumns.ALERTED_DATE + " INTEGER NOT NULL DEFAULT 0," + + // 背景颜色ID,整数类型,不能为空,默认值为0 + NoteColumns.BG_COLOR_ID + " INTEGER NOT NULL DEFAULT 0," + + // 创建日期,整数类型,不能为空,默认值为当前时间的时间戳(秒转换为毫秒) + NoteColumns.CREATED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," + + // 是否有附件,整数类型,不能为空,默认值为0 + NoteColumns.HAS_ATTACHMENT + " INTEGER NOT NULL DEFAULT 0," + + // 最后修改日期,整数类型,不能为空,默认值为当前时间的时间戳(秒转换为毫秒) + NoteColumns.MODIFIED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," + + // 文件夹中的笔记数量,整数类型,不能为空,默认值为0 + NoteColumns.NOTES_COUNT + " INTEGER NOT NULL DEFAULT 0," + + // 摘要(对于文件夹是名称,对于笔记是文本内容),文本类型,不能为空,默认值为空字符串 + NoteColumns.SNIPPET + " TEXT NOT NULL DEFAULT ''," + + // 类型(0代表笔记,1代表文件夹等),整数类型,不能为空,默认值为0 + NoteColumns.TYPE + " INTEGER NOT NULL DEFAULT 0," + + // 小部件ID,整数类型,不能为空,默认值为0 + NoteColumns.WIDGET_ID + " INTEGER NOT NULL DEFAULT 0," + + // 小部件类型,整数类型,不能为空,默认值为-1 + NoteColumns.WIDGET_TYPE + " INTEGER NOT NULL DEFAULT -1," + + // 同步ID,整数类型,不能为空,默认值为0 + NoteColumns.SYNC_ID + " INTEGER NOT NULL DEFAULT 0," + + // 本地是否修改的标记,整数类型,不能为空,默认值为0 + NoteColumns.LOCAL_MODIFIED + " INTEGER NOT NULL DEFAULT 0," + + // 移动到临时文件夹前的原始父ID,整数类型,不能为空,默认值为0 + NoteColumns.ORIGIN_PARENT_ID + " INTEGER NOT NULL DEFAULT 0," + + // Google任务ID,文本类型,不能为空,默认值为空字符串 + NoteColumns.GTASK_ID + " TEXT NOT NULL DEFAULT ''," + + // 版本号,整数类型,不能为空,默认值为0 + NoteColumns.VERSION + " INTEGER NOT NULL DEFAULT 0" + + ")"; + + // 创建数据表的SQL语句 + private static final String CREATE_DATA_TABLE_SQL = + "CREATE TABLE " + TABLE.DATA + "(" + + // 数据的唯一标识ID,整数类型,作为主键 + DataColumns.ID + " INTEGER PRIMARY KEY," + + // MIME类型,文本类型,不能为空 + DataColumns.MIME_TYPE + " TEXT NOT NULL," + + // 所属笔记的ID,整数类型,不能为空,默认值为0 + DataColumns.NOTE_ID + " INTEGER NOT NULL DEFAULT 0," + + // 创建日期,整数类型,不能为空,默认值为当前时间的时间戳(秒转换为毫秒) + NoteColumns.CREATED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," + + // 最后修改日期,整数类型,不能为空,默认值为当前时间的时间戳(秒转换为毫秒) + NoteColumns.MODIFIED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," + + // 数据内容,文本类型,不能为空,默认值为空字符串 + DataColumns.CONTENT + " TEXT NOT NULL DEFAULT ''," + + // 通用数据列1,整数类型 + DataColumns.DATA1 + " INTEGER," + + // 通用数据列2,整数类型 + DataColumns.DATA2 + " INTEGER," + + // 通用数据列3,文本类型,不能为空,默认值为空字符串 + DataColumns.DATA3 + " TEXT NOT NULL DEFAULT ''," + + // 通用数据列4,文本类型,不能为空,默认值为空字符串 + DataColumns.DATA4 + " TEXT NOT NULL DEFAULT ''," + + // 通用数据列5,文本类型,不能为空,默认值为空字符串 + DataColumns.DATA5 + " TEXT NOT NULL DEFAULT ''" + + ")"; + + // 创建数据的笔记ID索引的SQL语句(如果不存在则创建) + private static final String CREATE_DATA_NOTE_ID_INDEX_SQL = + "CREATE INDEX IF NOT EXISTS note_id_index ON " + + TABLE.DATA + "(" + DataColumns.NOTE_ID + ");"; + + /** + * 当将笔记移动到文件夹时,增加目标文件夹的笔记数量 + */ + // 当笔记表的父ID更新时,触发增加目标文件夹笔记数量的触发器SQL语句 + private static final String NOTE_INCREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER = + "CREATE TRIGGER increase_folder_count_on_update "+ + " AFTER UPDATE OF " + NoteColumns.PARENT_ID + " ON " + TABLE.NOTE + + " BEGIN " + + " UPDATE " + TABLE.NOTE + + " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + " + 1" + + " WHERE " + NoteColumns.ID + "=new." + NoteColumns.PARENT_ID + ";" + + " END"; + + /** + * 当将笔记从文件夹中移出时,减少原文件夹的笔记数量 + */ + // 当笔记表的父ID更新时,触发减少原文件夹笔记数量的触发器SQL语句 + private static final String NOTE_DECREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER = + "CREATE TRIGGER decrease_folder_count_on_update " + + " AFTER UPDATE OF " + NoteColumns.PARENT_ID + " ON " + TABLE.NOTE + + " BEGIN " + + " UPDATE " + TABLE.NOTE + + " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + "-1" + + " WHERE " + NoteColumns.ID + "=old." + NoteColumns.PARENT_ID + + " AND " + NoteColumns.NOTES_COUNT + ">0" + ";" + + " END"; + + /** + * 当向文件夹中插入新笔记时,增加目标文件夹的笔记数量 + */ + // 当在笔记表中插入新记录时,触发增加目标文件夹笔记数量的触发器SQL语句 + private static final String NOTE_INCREASE_FOLDER_COUNT_ON_INSERT_TRIGGER = + "CREATE TRIGGER increase_folder_count_on_insert " + + " AFTER INSERT ON " + TABLE.NOTE + + " BEGIN " + + " UPDATE " + TABLE.NOTE + + " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + " + 1" + + " WHERE " + NoteColumns.ID + "=new." + NoteColumns.PARENT_ID + ";" + + " END"; + + /** + * 当从文件夹中删除笔记时,减少原文件夹的笔记数量 + */ + // 当在笔记表中删除记录时,触发减少原文件夹笔记数量的触发器SQL语句 + private static final String NOTE_DECREASE_FOLDER_COUNT_ON_DELETE_TRIGGER = + "CREATE TRIGGER decrease_folder_count_on_delete " + + " AFTER DELETE ON " + TABLE.NOTE + + " BEGIN " + + " UPDATE " + TABLE.NOTE + + " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + "-1" + + " WHERE " + NoteColumns.ID + "=old." + NoteColumns.PARENT_ID + + " AND " + NoteColumns.NOTES_COUNT + ">0;" + + " END"; + + /** + * 当插入数据类型为文本笔记({@link DataConstants#NOTE})时,更新对应笔记的内容 + */ + // 当在数据表中插入数据且MIME类型为文本笔记时,触发更新对应笔记内容的触发器SQL语句 + private static final String DATA_UPDATE_NOTE_CONTENT_ON_INSERT_TRIGGER = + "CREATE TRIGGER update_note_content_on_insert " + + " AFTER INSERT ON " + TABLE.DATA + + " WHEN new." + DataColumns.MIME_TYPE + "='" + DataConstants.NOTE + "'" + + " BEGIN" + + " UPDATE " + TABLE.NOTE + + " SET " + NoteColumns.SNIPPET + "=new." + DataColumns.CONTENT + + " WHERE " + NoteColumns.ID + "=new." + DataColumns.NOTE_ID + ";" + + " END"; + + /** + * 当数据类型为文本笔记({@link DataConstants#NOTE})的内容发生更新时,更新对应笔记的内容 + */ + // 当在数据表中更新数据且原MIME类型为文本笔记时,触发更新对应笔记内容的触发器SQL语句 + private static final String DATA_UPDATE_NOTE_CONTENT_ON_UPDATE_TRIGGER = + "CREATE TRIGGER update_note_content_on_update " + + " AFTER UPDATE ON " + TABLE.DATA + + " WHEN old." + DataColumns.MIME_TYPE + "='" + DataConstants.NOTE + "'" + + " BEGIN" + + " UPDATE " + TABLE.NOTE + + " SET " + NoteColumns.SNIPPET + "=new." + DataColumns.CONTENT + + " WHERE " + NoteColumns.ID + "=new." + DataColumns.NOTE_ID + ";" + + " END"; + + /** + * 当数据类型为文本笔记({@link DataConstants#NOTE})的内容被删除时,清空对应笔记的内容 + */ + // 当在数据表中删除数据且原MIME类型为文本笔记时,触发清空对应笔记内容的触发器SQL语句 + private static final String DATA_UPDATE_NOTE_CONTENT_ON_DELETE_TRIGGER = + "CREATE TRIGGER update_note_content_on_delete " + + " AFTER delete ON " + TABLE.DATA + + " WHEN old." + DataColumns.MIME_TYPE + "='" + DataConstants.NOTE + "'" + + " BEGIN" + + " UPDATE " + TABLE.NOTE + + " SET " + NoteColumns.SNIPPET + "=''" + + " WHERE " + NoteColumns.ID + "=old." + DataColumns.NOTE_ID + ";" + + " END"; + + /** + * 删除属于已被删除笔记的数据 + */ + // 当在笔记表中删除记录时,触发删除对应数据表中相关数据的触发器SQL语句 + private static final String NOTE_DELETE_DATA_ON_DELETE_TRIGGER = + "CREATE TRIGGER delete_data_on_delete " + + " AFTER DELETE ON " + TABLE.NOTE + + " BEGIN" + + " DELETE FROM " + TABLE.DATA + + " WHERE " + DataColumns.NOTE_ID + "=old." + NoteColumns.ID + ";" + + " END"; + + /** + * 删除属于已被删除文件夹的笔记 + */ + // 当在笔记表中删除文件夹记录时,触发删除该文件夹下所有笔记记录的触发器SQL语句 + private static final String FOLDER_DELETE_NOTES_ON_DELETE_TRIGGER = + "CREATE TRIGGER folder_delete_notes_on_delete " + + " AFTER DELETE ON " + TABLE.NOTE + + " BEGIN" + + " DELETE FROM " + TABLE.NOTE + + " WHERE " + NoteColumns.PARENT_ID + "=old." + NoteColumns.ID + ";" + + " END"; + + /** + * 将属于已被移动到回收站文件夹的文件夹中的笔记也移动到回收站文件夹 + */ + // 当笔记表中文件夹的父ID更新为回收站文件夹ID时,触发移动该文件夹下所有笔记到回收站的触发器SQL语句 + private static final String FOLDER_MOVE_NOTES_ON_TRASH_TRIGGER = + "CREATE TRIGGER folder_move_notes_on_trash " + + " AFTER UPDATE ON " + TABLE.NOTE + + " WHEN new." + NoteColumns.PARENT_ID + "=" + Notes.ID_TRASH_FOLER + + " BEGIN" + + " UPDATE " + TABLE.NOTE + + " SET " + NoteColumns.PARENT_ID + "=" + Notes.ID_TRASH_FOLER + + " WHERE " + NoteColumns.PARENT_ID + "=old." + NoteColumns.ID + ";" + + " END"; + + // 构造函数,调用父类构造函数初始化数据库辅助类,传入上下文、数据库名、游标工厂(这里为null)和版本号 + public NotesDatabaseHelper(Context context) { + super(context, DB_NAME, null, DB_VERSION); + } + + // 创建笔记表的方法,执行创建笔记表的SQL语句,重新创建相关触发器,并创建系统文件夹 + public void createNoteTable(SQLiteDatabase db) { + db.execSQL(CREATE_NOTE_TABLE_SQL); + reCreateNoteTableTriggers(db); + createSystemFolder(db); + Log.d(TAG, "note table has been created"); + } + + // 重新创建笔记表相关触发器的方法,先删除旧的触发器,再创建新的触发器 + private void reCreateNoteTableTriggers(SQLiteDatabase db) { + db.execSQL("DROP TRIGGER IF EXISTS increase_folder_count_on_update"); + db.execSQL("DROP TRIGGER IF EXISTS decrease_folder_count_on_update"); + db.execSQL("DROP TRIGGER IF EXISTS decrease_folder_count_on_delete"); + db.execSQL("DROP TRIGGER IF EXISTS delete_data_on_delete"); + db.execSQL("DROP TRIGGER IF EXISTS increase_folder_count_on_insert"); + db.execSQL("DROP TRIGGER IF EXISTS folder_delete_notes_on_delete"); + db.execSQL("DROP TRIGGER IF EXISTS folder_move_notes_on_trash"); + + db.execSQL(NOTE_INCREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER); + db.execSQL(NOTE_DECREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER); + db.execSQL(NOTE_DECREASE_FOLDER_COUNT_ON_DELETE_TRIGGER); + db.execSQL(NOTE_DELETE_DATA_ON_DELETE_TRIGGER); + db.execSQL(NOTE_INCREASE_FOLDER_COUNT_ON_INSERT_TRIGGER); + db.execSQL(FOLDER_DELETE_NOTES_ON_DELETE_TRIGGER); + db.execSQL(FOLDER_MOVE_NOTES_ON_TRASH_TRIGGER); + } + + // 创建系统文件夹的方法,通过ContentValues设置文件夹相关信息并插入到笔记表中 + private void createSystemFolder(SQLiteDatabase db) { + ContentValues values = new ContentValues(); + + /** + * 用于存储通话记录笔记的通话记录文件夹 + */ + values.put(NoteColumns.ID, Notes.ID_CALL_RECORD_FOLDER); + values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); + db.insert(TABLE.NOTE, null, values); + + /** + * 作为默认文件夹的根文件夹 + */ + values.clear(); + values.put(NoteColumns.ID, Notes.ID_ROOT_FOLDER); + values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); + db.insert(TABLE.NOTE, null, values); + + /** + * 用于移动笔记的临时文件夹 + */ + values.clear(); + values.put(NoteColumns.ID, Notes.ID_TEMPARAY_FOLDER); + values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); + db.insert(TABLE.NOTE, null, values); + + /** + * 创建回收站文件夹 + */ + values.clear(); + values.put(NoteColumns.ID, Notes.ID_TRASH_FOLER); + values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); + db.insert(TABLE.NOTE, null, values); + } + + // 创建数据表的方法,执行创建数据表的SQL语句,重新创建相关触发器,并创建数据的笔记ID索引 + public void createDataTable(SQLiteDatabase db) { + db.execSQL(CREATE_DATA_TABLE_SQL); + reCreateDataTableTriggers(db); + db.execSQL(CREATE_DATA_NOTE_ID_INDEX_SQL); + Log.d(TAG, "data table has been created"); + } + + // 重新创建数据表相关触发器的方法 + private void reCreateDataTableTriggers(SQLiteDatabase db) { + // 如果存在名为update_note_content_on_insert的触发器,则删除它 + db.execSQL("DROP TRIGGER IF EXISTS update_note_content_on_insert"); + // 如果存在名为update_note_content_on_update的触发器,则删除它 + db.execSQL("DROP TRIGGER IF EXISTS update_note_content_on_update"); + // 如果存在名为update_note_content_on_delete的触发器,则删除它 + db.execSQL("DROP TRIGGER IF EXISTS update_note_content_on_delete"); + + // 执行创建插入数据时更新笔记内容的触发器的SQL语句 + db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_INSERT_TRIGGER); + // 执行创建更新数据时更新笔记内容的触发器的SQL语句 + db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_UPDATE_TRIGGER); + // 执行创建删除数据时更新笔记内容的触发器的SQL语句 + db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_DELETE_TRIGGER); + } + + // 获取数据库辅助类单例实例的静态方法,使用同步锁确保线程安全 + static synchronized NotesDatabaseHelper getInstance(Context context) { + // 如果单例实例尚未创建 + if (mInstance == null) { + // 创建一个新的数据库辅助类实例 + mInstance = new NotesDatabaseHelper(context); + } + // 返回单例实例 + return mInstance; + } + + // 当数据库第一次创建时调用的方法 + @Override + public void onCreate(SQLiteDatabase db) { + // 创建笔记表 + createNoteTable(db); + // 创建数据表 + createDataTable(db); + } + + // 当数据库版本需要升级时调用的方法 + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + // 标记是否需要重新创建触发器 + boolean reCreateTriggers = false; + // 标记是否跳过版本2的升级逻辑 + boolean skipV2 = false; + + // 如果旧版本是1 + if (oldVersion == 1) { + // 升级到版本2 + upgradeToV2(db); + // 设置跳过版本2的升级逻辑 + skipV2 = true; // 这次升级包含了从版本2到版本3的升级逻辑 + // 旧版本号加1 + oldVersion++; + } + + // 如果旧版本是2且没有跳过版本2的升级逻辑 + if (oldVersion == 2 && !skipV2) { + // 升级到版本3 + upgradeToV3(db); + // 设置需要重新创建触发器 + reCreateTriggers = true; + // 旧版本号加1 + oldVersion++; + } + + // 如果旧版本是3 + if (oldVersion == 3) { + // 升级到版本4 + upgradeToV4(db); + // 旧版本号加1 + oldVersion++; + } + + // 如果需要重新创建触发器 + if (reCreateTriggers) { + // 重新创建笔记表相关的触发器 + reCreateNoteTableTriggers(db); + // 重新创建数据表相关的触发器 + reCreateDataTableTriggers(db); + } + + // 如果旧版本号和新版本号不相等,说明升级失败 + if (oldVersion != newVersion) { + // 抛出异常,提示数据库升级到指定版本失败 + throw new IllegalStateException("Upgrade notes database to version " + newVersion + + "fails"); + } + } + + // 将数据库升级到版本2的私有方法 + private void upgradeToV2(SQLiteDatabase db) { + // 如果存在笔记表,则删除它 + db.execSQL("DROP TABLE IF EXISTS " + TABLE.NOTE); + // 如果存在数据表,则删除它 + db.execSQL("DROP TABLE IF EXISTS " + TABLE.DATA); + // 创建笔记表 + createNoteTable(db); + // 创建数据表 + createDataTable(db); + } + + // 将数据库升级到版本3的私有方法 + private void upgradeToV3(SQLiteDatabase db) { + // 删除不再使用的触发器:插入笔记时更新修改日期的触发器 + db.execSQL("DROP TRIGGER IF EXISTS update_note_modified_date_on_insert"); + // 删除不再使用的触发器:删除笔记时更新修改日期的触发器 + db.execSQL("DROP TRIGGER IF EXISTS update_note_modified_date_on_delete"); + // 删除不再使用的触发器:更新笔记时更新修改日期的触发器 + db.execSQL("DROP TRIGGER IF EXISTS update_note_modified_date_on_update"); + // 向笔记表中添加一个用于存储Google任务ID的列 + db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.GTASK_ID + + " TEXT NOT NULL DEFAULT ''"); + // 添加一个回收站系统文件夹 + ContentValues values = new ContentValues(); + // 设置文件夹的ID为回收站文件夹的ID + values.put(NoteColumns.ID, Notes.ID_TRASH_FOLER); + // 设置文件夹的类型为系统类型 + values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); + // 将回收站文件夹的信息插入到笔记表中 + db.insert(TABLE.NOTE, null, values); + } + + // 将数据库升级到版本4的私有方法 + private void upgradeToV4(SQLiteDatabase db) { + // 向笔记表中添加一个用于存储版本号的列 + db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.VERSION + + " INTEGER NOT NULL DEFAULT 0"); + } + } + \ No newline at end of file diff --git a/src/data/NotesProvider.java b/src/data/NotesProvider.java new file mode 100644 index 0000000..bf7aa3a --- /dev/null +++ b/src/data/NotesProvider.java @@ -0,0 +1,411 @@ +/* + * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.micode.notes.data; + + +import android.app.SearchManager; +import android.content.ContentProvider; +import android.content.ContentUris; +import android.content.ContentValues; +import android.content.Intent; +import android.content.UriMatcher; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; +import android.net.Uri; +import android.text.TextUtils; +import android.util.Log; + +import net.micode.notes.R; +import net.micode.notes.data.Notes.DataColumns; +import net.micode.notes.data.Notes.NoteColumns; +import net.micode.notes.data.NotesDatabaseHelper.TABLE; + + +public class NotesProvider extends ContentProvider { + // 用于匹配Uri的UriMatcher对象 + private static final UriMatcher mMatcher; + // 数据库辅助类实例,用于操作数据库 + private NotesDatabaseHelper mHelper; + // 日志标签 + private static final String TAG = "NotesProvider"; + + // 用于匹配不同Uri的请求码 + private static final int URI_NOTE = 1; + // 匹配单个笔记的Uri的请求码 + private static final int URI_NOTE_ITEM = 2; + // 匹配数据的Uri的请求码 + private static final int URI_DATA = 3; + // 匹配单个数据项的Uri的请求码 + private static final int URI_DATA_ITEM = 4; + // 匹配搜索的Uri的请求码 + private static final int URI_SEARCH = 5; + // 匹配搜索建议的Uri的请求码 + private static final int URI_SEARCH_SUGGEST = 6; + + static { + // 初始化UriMatcher,设置默认匹配为不匹配 + mMatcher = new UriMatcher(UriMatcher.NO_MATCH); + // 添加匹配笔记列表Uri的规则 + mMatcher.addURI(Notes.AUTHORITY, "note", URI_NOTE); + // 添加匹配单个笔记Uri的规则,其中#表示匹配任意数字 + mMatcher.addURI(Notes.AUTHORITY, "note/#", URI_NOTE_ITEM); + // 添加匹配数据列表Uri的规则 + mMatcher.addURI(Notes.AUTHORITY, "data", URI_DATA); + // 添加匹配单个数据项Uri的规则,其中#表示匹配任意数字 + mMatcher.addURI(Notes.AUTHORITY, "data/#", URI_DATA_ITEM); + // 添加匹配搜索Uri的规则 + mMatcher.addURI(Notes.AUTHORITY, "search", URI_SEARCH); + // 添加匹配搜索建议Uri的规则,用于处理查询 + mMatcher.addURI(Notes.AUTHORITY, SearchManager.SUGGEST_URI_PATH_QUERY, URI_SEARCH_SUGGEST); + // 添加匹配搜索建议Uri的规则,用于处理带参数的查询 + mMatcher.addURI(Notes.AUTHORITY, SearchManager.SUGGEST_URI_PATH_QUERY + "/*", URI_SEARCH_SUGGEST); + } + + /** + * x'0A'在sqlite中表示'\n'字符。对于搜索结果中的标题和内容, + * 我们将修剪'\n'和空白字符,以便显示更多信息。 + */ + // 用于搜索的投影,定义了搜索结果中包含的列及其处理方式 + private static final String NOTES_SEARCH_PROJECTION = NoteColumns.ID + "," + + NoteColumns.ID + " AS " + SearchManager.SUGGEST_COLUMN_INTENT_EXTRA_DATA + "," + + "TRIM(REPLACE(" + NoteColumns.SNIPPET + ", x'0A','')) AS " + SearchManager.SUGGEST_COLUMN_TEXT_1 + "," + + "TRIM(REPLACE(" + NoteColumns.SNIPPET + ", x'0A','')) AS " + SearchManager.SUGGEST_COLUMN_TEXT_2 + "," + + R.drawable.search_result + " AS " + SearchManager.SUGGEST_COLUMN_ICON_1 + "," + + "'" + Intent.ACTION_VIEW + "' AS " + SearchManager.SUGGEST_COLUMN_INTENT_ACTION + "," + + "'" + Notes.TextNote.CONTENT_TYPE + "' AS " + SearchManager.SUGGEST_COLUMN_INTENT_DATA; + + // 用于搜索笔记摘要的查询语句 + private static String NOTES_SNIPPET_SEARCH_QUERY = "SELECT " + NOTES_SEARCH_PROJECTION + + " FROM " + TABLE.NOTE + + " WHERE " + NoteColumns.SNIPPET + " LIKE ?" + + " AND " + NoteColumns.PARENT_ID + "<>" + Notes.ID_TRASH_FOLER + + " AND " + NoteColumns.TYPE + "=" + Notes.TYPE_NOTE; + + // 初始化ContentProvider时调用的方法 + @Override + public boolean onCreate() { + // 获取数据库辅助类的单例实例 + mHelper = NotesDatabaseHelper.getInstance(getContext()); + // 返回true表示初始化成功 + return true; + } + + // 处理查询请求的方法 + @Override + public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, + String sortOrder) { + // 用于存储查询结果的游标 + Cursor c = null; + // 获取可读的数据库实例 + SQLiteDatabase db = mHelper.getReadableDatabase(); + // 用于存储Uri路径中的ID + String id = null; + // 根据Uri匹配结果进行不同的查询操作 + switch (mMatcher.match(uri)) { + case URI_NOTE: + // 查询笔记表,返回所有符合条件的记录 + c = db.query(TABLE.NOTE, projection, selection, selectionArgs, null, null, + sortOrder); + break; + case URI_NOTE_ITEM: + // 获取Uri路径中的ID + id = uri.getPathSegments().get(1); + // 查询笔记表,返回指定ID的记录 + c = db.query(TABLE.NOTE, projection, NoteColumns.ID + "=" + id + + parseSelection(selection), selectionArgs, null, null, sortOrder); + break; + case URI_DATA: + // 查询数据表,返回所有符合条件的记录 + c = db.query(TABLE.DATA, projection, selection, selectionArgs, null, null, + sortOrder); + break; + case URI_DATA_ITEM: + // 获取Uri路径中的ID + id = uri.getPathSegments().get(1); + // 查询数据表,返回指定ID的记录 + c = db.query(TABLE.DATA, projection, DataColumns.ID + "=" + id + + parseSelection(selection), selectionArgs, null, null, sortOrder); + break; + case URI_SEARCH: + case URI_SEARCH_SUGGEST: + // 检查是否指定了排序或投影,如果是则抛出异常 + if (sortOrder != null || projection != null) { + throw new IllegalArgumentException( + "do not specify sortOrder, selection, selectionArgs, or projection" + "with this query"); + } + + // 用于存储搜索字符串 + String searchString = null; + // 如果是搜索建议的Uri + if (mMatcher.match(uri) == URI_SEARCH_SUGGEST) { + // 如果Uri路径段数量大于1,则获取搜索字符串 + if (uri.getPathSegments().size() > 1) { + searchString = uri.getPathSegments().get(1); + } + } else { + // 否则从Uri参数中获取搜索字符串 + searchString = uri.getQueryParameter("pattern"); + } + + // 如果搜索字符串为空,则返回null + if (TextUtils.isEmpty(searchString)) { + return null; + } + + try { + // 格式化搜索字符串,添加通配符 + searchString = String.format("%%%s%%", searchString); + // 执行原始查询,获取搜索结果 + c = db.rawQuery(NOTES_SNIPPET_SEARCH_QUERY, + new String[]{searchString}); + } catch (IllegalStateException ex) { + // 捕获异常并记录日志 + Log.e(TAG, "got exception: " + ex.toString()); + } + break; + default: + // 如果Uri不匹配,则抛出异常 + throw new IllegalArgumentException("Unknown URI " + uri); + } + // 如果游标不为空,设置通知Uri + if (c != null) { + c.setNotificationUri(getContext().getContentResolver(), uri); + } + // 返回查询结果游标 + return c; + } + + // 处理插入请求的方法 + @Override + public Uri insert(Uri uri, ContentValues values) { + // 获取可写的数据库实例 + SQLiteDatabase db = mHelper.getWritableDatabase(); + // 用于存储插入的ID + long dataId = 0, noteId = 0, insertedId = 0; + // 根据Uri匹配结果进行不同的插入操作 + switch (mMatcher.match(uri)) { + case URI_NOTE: + // 插入笔记表,获取插入的笔记ID + insertedId = noteId = db.insert(TABLE.NOTE, null, values); + break; + case URI_DATA: + // 如果插入的数据包含笔记ID + if (values.containsKey(DataColumns.NOTE_ID)) { + // 获取笔记ID + noteId = values.getAsLong(DataColumns.NOTE_ID); + } else { + // 否则记录错误日志 + Log.d(TAG, "Wrong data format without note id:" + values.toString()); + } + // 插入数据表,获取插入的数据ID + insertedId = dataId = db.insert(TABLE.DATA, null, values); + break; + default: + // 如果Uri不匹配,则抛出异常 + throw new IllegalArgumentException("Unknown URI " + uri); + } + // 如果插入的笔记ID大于0,通知内容解析器笔记Uri发生变化 + if (noteId > 0) { + getContext().getContentResolver().notifyChange( + ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId), null); + } + + // 如果插入的数据ID大于0,通知内容解析器数据Uri发生变化 + if (dataId > 0) { + getContext().getContentResolver().notifyChange( + ContentUris.withAppendedId(Notes.CONTENT_DATA_URI, dataId), null); + } + + // 返回插入后的Uri + return ContentUris.withAppendedId(uri, insertedId); + } + + // 处理删除请求的方法 + @Override + public int delete(Uri uri, String selection, String[] selectionArgs) { + // 用于记录删除的行数 + int count = 0; + // 用于存储Uri路径中的ID + String id = null; + // 获取可写的数据库实例 + SQLiteDatabase db = mHelper.getWritableDatabase(); + // 标记是否删除数据 + boolean deleteData = false; + // 根据Uri匹配结果进行不同的删除操作 + switch (mMatcher.match(uri)) { + case URI_NOTE: + // 构建删除条件,排除系统文件夹 + selection = "(" + selection + ") AND " + NoteColumns.ID + ">0 "; + // 删除笔记表中符合条件的记录,获取删除的行数 + count = db.delete(TABLE.NOTE, selection, selectionArgs); + break; + case URI_NOTE_ITEM: + // 获取Uri路径中的ID + id = uri.getPathSegments().get(1); + /** + * ID小于等于0的是系统文件夹,不允许删除 + */ + long noteId = Long.valueOf(id); + // 如果是系统文件夹,则不进行删除操作 + if (noteId <= 0) { + break; + } + // 删除笔记表中指定ID的记录,获取删除的行数 + count = db.delete(TABLE.NOTE, + NoteColumns.ID + "=" + id + parseSelection(selection), selectionArgs); + break; + case URI_DATA: + // 删除数据表中符合条件的记录,获取删除的行数 + count = db.delete(TABLE.DATA, selection, selectionArgs); + // 标记删除了数据 + deleteData = true; + break; + case URI_DATA_ITEM: + // 获取Uri路径中的ID + id = uri.getPathSegments().get(1); + // 删除数据表中指定ID的记录,获取删除的行数 + count = db.delete(TABLE.DATA, + DataColumns.ID + "=" + id + parseSelection(selection), selectionArgs); + // 标记删除了数据 + deleteData = true; + break; + default: + // 如果Uri不匹配,则抛出异常 + throw new IllegalArgumentException("Unknown URI " + uri); + } + // 如果删除的行数大于0 + if (count > 0) { + // 如果删除了数据,通知内容解析器笔记Uri发生变化 + if (deleteData) { + getContext().getContentResolver().notifyChange(Notes.CONTENT_NOTE_URI, null); + } + // 通知内容解析器当前Uri发生变化 + getContext().getContentResolver().notifyChange(uri, null); + } + // 返回删除的行数 + return count; + } + + // 处理更新请求的方法 + @Override + public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { + // 用于记录更新的行数 + int count = 0; + // 用于存储Uri路径中的ID + String id = null; + // 获取可写的数据库实例 + SQLiteDatabase db = mHelper.getWritableDatabase(); + // 标记是否更新了数据 + boolean updateData = false; + // 根据Uri匹配结果进行不同的更新操作 + switch (mMatcher.match(uri)) { + case URI_NOTE: + // 增加笔记版本号 + increaseNoteVersion(-1, selection, selectionArgs); + // 更新笔记表中符合条件的记录,获取更新的行数 + count = db.update(TABLE.NOTE, values, selection, selectionArgs); + break; + case URI_NOTE_ITEM: + // 获取Uri路径中的ID + id = uri.getPathSegments().get(1); + // 增加指定笔记的版本号 + increaseNoteVersion(Long.valueOf(id), selection, selectionArgs); + // 更新笔记表中指定ID的记录,获取更新的行数 + count = db.update(TABLE.NOTE, values, NoteColumns.ID + "=" + id + + parseSelection(selection), selectionArgs); + break; + case URI_DATA: + // 更新数据表中符合条件的记录,获取更新的行数 + count = db.update(TABLE.DATA, values, selection, selectionArgs); + // 标记更新了数据 + updateData = true; + break; + case URI_DATA_ITEM: + // 获取Uri路径中的ID + id = uri.getPathSegments().get(1); + // 更新数据表中指定ID的记录,获取更新的行数 + count = db.update(TABLE.DATA, values, DataColumns.ID + "=" + id + + parseSelection(selection), selectionArgs); + // 标记更新了数据 + updateData = true; + break; + default: + // 如果Uri不匹配,则抛出异常 + throw new IllegalArgumentException("Unknown URI " + uri); + } + + // 如果更新的行数大于0 + if (count > 0) { + // 如果更新了数据,通知内容解析器笔记Uri发生变化 + if (updateData) { + getContext().getContentResolver().notifyChange(Notes.CONTENT_NOTE_URI, null); + } + // 通知内容解析器当前Uri发生变化 + getContext().getContentResolver().notifyChange(uri, null); + } + // 返回更新的行数 + return count; + } + + // 解析选择条件的方法,添加额外的条件括号 + private String parseSelection(String selection) { + return (!TextUtils.isEmpty(selection)? " AND (" + selection + ')' : ""); + } + + // 增加笔记版本号的方法 + private void increaseNoteVersion(long id, String selection, String[] selectionArgs) { + // 用于构建SQL语句的StringBuilder + StringBuilder sql = new StringBuilder(120); + // 添加更新语句的开头 + sql.append("UPDATE "); + // 添加要更新的表名 + sql.append(TABLE.NOTE); + // 添加设置版本号的语句 + sql.append(" SET "); + sql.append(NoteColumns.VERSION); + sql.append("=" + NoteColumns.VERSION + "+1 "); + + // 如果ID大于0或选择条件不为空,则添加WHERE子句 + if (id > 0 ||!TextUtils.isEmpty(selection)) { + sql.append(" WHERE "); + } + // 如果ID大于0,则添加ID条件 + if (id > 0) { + sql.append(NoteColumns.ID + "=" + String.valueOf(id)); + } + // 如果选择条件不为空,则添加选择条件 + if (!TextUtils.isEmpty(selection)) { + String selectString = id > 0? parseSelection(selection) : selection; + // 替换选择条件中的占位符 + for (String args : selectionArgs) { + selectString = selectString.replaceFirst("\\?", args); + } + sql.append(selectString); + } + + // 执行SQL语句,更新笔记版本号 + mHelper.getWritableDatabase().execSQL(sql.toString()); + } + + // 获取Uri对应的MIME类型的方法,目前未实现 + @Override + public String getType(Uri uri) { + // TODO Auto-generated method stub + return null; + } + +}