diff --git a/cwj-daimafenxi.docx b/cwj-daimafenxi.docx new file mode 100644 index 0000000..bf64f6e Binary files /dev/null and b/cwj-daimafenxi.docx differ diff --git a/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/res/values/styles.xml b/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/res/values/styles.xml index d750e65..ad0d90d 100644 --- a/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/res/values/styles.xml +++ b/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/res/values/styles.xml @@ -64,6 +64,6 @@ \ No newline at end of file diff --git a/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/NoteWidgetProvider.docx b/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/NoteWidgetProvider.docx new file mode 100644 index 0000000..5d2dd55 Binary files /dev/null and b/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/NoteWidgetProvider.docx differ diff --git a/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/NoteWidgetProvider.java.docx b/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/NoteWidgetProvider.java.docx new file mode 100644 index 0000000..e69de29 diff --git a/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/NoteWidgetProvider_2x.docx b/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/NoteWidgetProvider_2x.docx new file mode 100644 index 0000000..e69de29 diff --git a/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/NoteWidgetProvider_2x.java.docx b/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/NoteWidgetProvider_2x.java.docx new file mode 100644 index 0000000..e69de29 diff --git a/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/NoteWidgetProvider_4x.docx b/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/NoteWidgetProvider_4x.docx new file mode 100644 index 0000000..e69de29 diff --git a/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/data/Contact.java b/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/data/Contact.java index d97ac5d..6b9e30b 100644 --- a/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/data/Contact.java +++ b/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/data/Contact.java @@ -26,9 +26,13 @@ import android.util.Log; import java.util.HashMap; public class Contact { + + // 缓存联系人信息,键为电话号码,值为联系人姓名 private static HashMap sContactCache; private static final String TAG = "Contact"; + // 定义字符串CALLER_ID_SELECTION + // 用于查询联系人信息的选择条件 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 " @@ -36,17 +40,24 @@ public class Contact { + " FROM phone_lookup" + " WHERE min_match = '+')"; + // 获取联系人姓名 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, new String [] { Phone.DISPLAY_NAME }, @@ -54,20 +65,34 @@ public class Contact { new String[] { phoneNumber }, null); + // 处理查询结果 + // moveToFirst()返回第一条 if (cursor != null && cursor.moveToFirst()) { try { + // 获取联系人姓名 String name = cursor.getString(0); + // 将姓名加入缓存 sContactCache.put(phoneNumber, name); return name; } catch (IndexOutOfBoundsException e) { + // 捕获异常,记录错误日志 Log.e(TAG, " Cursor get string error " + e.toString()); return null; } finally { cursor.close(); } } else { + // 如果没有找到匹配的联系人,记录日志并返回空 Log.d(TAG, "No contact matched with number:" + phoneNumber); return null; } } } +/* +在这段Java代码中,我们有一个名为 Contact 的类,它包含了一个用于获取联系人信息的静态方法 getContact。以下是对代码中各部分的注释: + +sContactCache:用于缓存联系人信息,键为电话号码,值为联系人姓名。 +TAG:用于记录日志的标签。 +CALLER_ID_SELECTION:用于查询联系人信息的选择条件。 +getContact 方法:用于获取给定电话号码对应的联系人姓名。首先检查缓存中是否已存在该电话号码对应的联系人姓名,如果存在则直接返回;如果不存在,则构建查询条件并查询联系人信息,将查询结果加入缓存并返回联系人姓名,如果查询不到匹配的联系人,则记录日志并返回空。 +*/ \ No newline at end of file diff --git a/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/data/Notes.java b/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/data/Notes.java index f240604..31adbd8 100644 --- a/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/data/Notes.java +++ b/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/data/Notes.java @@ -17,9 +17,14 @@ package net.micode.notes.data; import android.net.Uri; + +// Notes 类中定义了很多常量,这些常量大多是int型和string型 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; @@ -30,60 +35,75 @@ public class Notes { * {@link Notes#ID_TEMPARAY_FOLDER } is for notes belonging no folder * {@link Notes#ID_CALL_RECORD_FOLDER} is to store call records */ - public static final int ID_ROOT_FOLDER = 0; - public static final int ID_TEMPARAY_FOLDER = -1; - public static final int ID_CALL_RECORD_FOLDER = -2; - public static final int ID_TRASH_FOLER = -3; + // 系统文件夹的标识符 + public static final int ID_ROOT_FOLDER = 0;// 默认文件夹 + public static final int ID_TEMPARAY_FOLDER = -1;// 无文件夹的笔记 + public static final int ID_CALL_RECORD_FOLDER = -2;// 存储通话记录 + public static final int ID_TRASH_FOLER = -3;// 垃圾箱 + // 意图额外数据的键 public static final String INTENT_EXTRA_ALERT_DATE = "net.micode.notes.alert_date"; public static final String INTENT_EXTRA_BACKGROUND_ID = "net.micode.notes.background_color_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"; 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; public static final int TYPE_WIDGET_2X = 0; 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 to query all notes and folders */ public static final Uri CONTENT_NOTE_URI = Uri.parse("content://" + AUTHORITY + "/note"); +//定义查询便签和文件夹的指针 + /** * Uri to query data */ public static final Uri CONTENT_DATA_URI = Uri.parse("content://" + AUTHORITY + "/data"); + //定义查找数据的指针 + + + // 笔记列的接口 + // 定义NoteColumns的常量,用于后面创建数据库的表头 public interface NoteColumns { /** * The unique ID for a row *

Type: INTEGER (long)

*/ + // 行的唯一ID public static final String ID = "_id"; /** * The parent's id for note or folder *

Type: INTEGER (long)

*/ + // 笔记或文件夹的父ID public static final String PARENT_ID = "parent_id"; /** * Created data for note or folder *

Type: INTEGER (long)

*/ + // 创建日期 public static final String CREATED_DATE = "created_date"; /** * Latest modified date *

Type: INTEGER (long)

*/ + // 最后修改日期 public static final String MODIFIED_DATE = "modified_date"; @@ -91,30 +111,35 @@ public class Notes { * Alert date *

Type: INTEGER (long)

*/ + // 提醒日期 public static final String ALERTED_DATE = "alert_date"; /** * Folder's name or text content of note *

Type: TEXT

*/ + // 文件夹名称或笔记的文本内容 public static final String SNIPPET = "snippet"; /** * Note's widget id *

Type: INTEGER (long)

*/ + // 笔记的小部件ID public static final String WIDGET_ID = "widget_id"; /** * Note's widget type *

Type: INTEGER (long)

*/ + // 笔记的小部件类型 public static final String WIDGET_TYPE = "widget_type"; /** * Note's background color's id *

Type: INTEGER (long)

*/ + // 笔记的背景颜色ID public static final String BG_COLOR_ID = "bg_color_id"; /** @@ -122,86 +147,102 @@ public class Notes { * note, it has at least one attachment *

Type: INTEGER

*/ + // 笔记是否有附件 public static final String HAS_ATTACHMENT = "has_attachment"; /** * Folder's count of notes *

Type: INTEGER (long)

*/ + // 文件夹中的笔记数量 public static final String NOTES_COUNT = "notes_count"; /** * The file type: folder or note *

Type: INTEGER

*/ + // 文件类型:文件夹或笔记 public static final String TYPE = "type"; /** * The last sync id *

Type: INTEGER (long)

*/ + // 最后同步ID public static final String SYNC_ID = "sync_id"; /** * Sign to indicate local modified or not *

Type: INTEGER

*/ + // 本地修改标志 public static final String LOCAL_MODIFIED = "local_modified"; /** * Original parent id before moving into temporary folder *

Type : INTEGER

*/ + // 移动到临时文件夹之前的原始父ID public static final String ORIGIN_PARENT_ID = "origin_parent_id"; /** * The gtask id *

Type : TEXT

*/ + // Gtask ID public static final String GTASK_ID = "gtask_id"; /** * The version code *

Type : INTEGER (long)

*/ + // 版本号 public static final String VERSION = "version"; - } + }//这些常量主要是定义便签的属性的 + // 数据列的接口 + // 定义DataColumns的常量,用于后面创建数据库的表头 public interface DataColumns { /** * The unique ID for a row *

Type: INTEGER (long)

*/ + // 行的唯一ID public static final String ID = "_id"; /** * The MIME type of the item represented by this row. *

Type: Text

*/ + // 该行所代表项的MIME类型 public static final String MIME_TYPE = "mime_type"; /** * The reference id to note that this data belongs to *

Type: INTEGER (long)

*/ + // 该数据所属笔记的引用ID public static final String NOTE_ID = "note_id"; /** * Created data for note or folder *

Type: INTEGER (long)

*/ + // 创建日期 public static final String CREATED_DATE = "created_date"; /** * Latest modified date *

Type: INTEGER (long)

*/ + // 最后修改日期 public static final String MODIFIED_DATE = "modified_date"; /** * Data's content *

Type: TEXT

*/ + // 数据内容 public static final String CONTENT = "content"; @@ -210,6 +251,7 @@ public class Notes { * integer data type *

Type: INTEGER

*/ + // 通用数据列,意义由MIME类型决定,用于整型数据类型 public static final String DATA1 = "data1"; /** @@ -217,6 +259,7 @@ public class Notes { * integer data type *

Type: INTEGER

*/ + // 通用数据列,意义由MIME类型决定,用于整型数据类型 public static final String DATA2 = "data2"; /** @@ -224,6 +267,7 @@ public class Notes { * TEXT data type *

Type: TEXT

*/ + // 通用数据列,意义由MIME类型决定,用于整型数据类型 public static final String DATA3 = "data3"; /** @@ -231,6 +275,7 @@ public class Notes { * TEXT data type *

Type: TEXT

*/ + // 通用数据列,意义由MIME类型决定,用于整型数据类型 public static final String DATA4 = "data4"; /** @@ -238,14 +283,18 @@ public class Notes { * TEXT data type *

Type: TEXT

*/ + // 通用数据列,意义由MIME类型决定,用于整型数据类型 public static final String DATA5 = "data5"; } + // 文本笔记的数据列 + //主要是定义存储便签内容数据的 public static final class TextNote implements DataColumns { /** * Mode to indicate the text in check list mode or not *

Type: Integer 1:check list mode 0: normal mode

*/ + // 表示文本为检查列表模式或非检查列表模式的模式 public static final String MODE = DATA1; public static final int MODE_CHECK_LIST = 1; @@ -255,19 +304,22 @@ public class Notes { public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/text_note"; public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/text_note"); - } + }//文本内容的数据结构 + // 通话笔记的数据列 public static final class CallNote implements DataColumns { /** * Call date for this record *

Type: INTEGER (long)

*/ + // 记录的通话日期 public static final String CALL_DATE = DATA1; /** * Phone number for this record *

Type: TEXT

*/ + // 记录的电话号码 public static final String PHONE_NUMBER = DATA3; public static final String CONTENT_TYPE = "vnd.android.cursor.dir/call_note"; @@ -275,5 +327,13 @@ public class Notes { public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/call_note"; public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/call_note"); - } + }//电话内容的数据结构 } +/* +在这段Java代码中,我们有一个名为 Notes 的类,它包含了一些常量和内部类,用于定义笔记应用中的各种数据列、MIME类型和URI。以下是对代码中各部分的注释: + +定义了一系列常量,包括权限、日志标签、笔记类型、系统文件夹的标识符等。 +定义了 NoteColumns 和 DataColumns 接口,用于表示笔记和数据的列。 +定义了 TextNote 和 CallNote 内部类,用于表示文本笔记和通话笔记的数据列,并包含了相应的MIME类型和内容提供者URI。 +这个类的主要作用是定义笔记应用中的数据结构和相关常量。 +* */ \ No newline at end of file diff --git a/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/data/NotesDatabaseHelper.java b/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/data/NotesDatabaseHelper.java index ffe5d57..dbafe7b 100644 --- a/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/data/NotesDatabaseHelper.java +++ b/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/data/NotesDatabaseHelper.java @@ -28,10 +28,13 @@ import net.micode.notes.data.Notes.NoteColumns; 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"; @@ -360,3 +363,12 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { + " INTEGER NOT NULL DEFAULT 0"); } } +/* +*在这段Java代码中,我们有一个名为 NotesDatabaseHelper 的类,它继承自 SQLiteOpenHelper。以下是对代码中各部分的注释: + +定义了数据库名称和版本常量,以及数据表的接口。 +包含了一系列SQL语句,用于创建笔记表、数据表和触发器。 +包含了方法,用于创建笔记表、重新创建笔记表触发器、创建系统文件夹、创建数据表、重新创建数据表触发器,以及获取数据库帮助类的实例。 +包含了 onCreate 和 onUpgrade 方法,用于在数据库创建和升级时执行相应的操作。 +包含了私有方法,用于升级数据库到不同的版本。 +* */ \ No newline at end of file diff --git a/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/data_contact.docx b/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/data_contact.docx new file mode 100644 index 0000000..1f434ec Binary files /dev/null and b/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/data_contact.docx differ diff --git a/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/data_notes.docx b/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/data_notes.docx new file mode 100644 index 0000000..890193b Binary files /dev/null and b/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/data_notes.docx differ diff --git a/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/data_notesdatabasegelper.docx b/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/data_notesdatabasegelper.docx new file mode 100644 index 0000000..e69de29 diff --git a/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/exception..docx b/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/exception..docx new file mode 100644 index 0000000..e69de29 diff --git a/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/exception.ActionFailureExcept.docx b/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/exception.ActionFailureExcept.docx new file mode 100644 index 0000000..e69de29 diff --git a/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/exception.ActionFailureException.docx b/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/exception.ActionFailureException.docx new file mode 100644 index 0000000..e69de29 diff --git a/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/exception.NetworkFailureException.docx b/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/exception.NetworkFailureException.docx new file mode 100644 index 0000000..e69de29 diff --git a/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/gtask/exception/ActionFailureException.java b/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/gtask/exception/ActionFailureException.java index 15504be..188261f 100644 --- a/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/gtask/exception/ActionFailureException.java +++ b/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/gtask/exception/ActionFailureException.java @@ -16,18 +16,31 @@ package net.micode.notes.gtask.exception; +// 自定义异常类,表示操作失败 public class ActionFailureException extends RuntimeException { private static final long serialVersionUID = 4425249765923293627L; + // 无参构造函数 public ActionFailureException() { super(); } + // 带有错误信息的构造函数 public ActionFailureException(String paramString) { super(paramString); } + // 带有错误信息和原因的构造函数 public ActionFailureException(String paramString, Throwable paramThrowable) { super(paramString, paramThrowable); } } +/* +* +* 在这段Java代码中,我们有一个名为 ActionFailureException 的类,它继承自 RuntimeException。以下是对代码中各部分的注释: + +ActionFailureException:自定义异常类,用于表示操作失败。 +serialVersionUID:序列化版本UID。 +ActionFailureException():无参构造函数。 +ActionFailureException(String paramString):带有错误信息的构造函数。 +ActionFailureException(String paramString, Throwable paramThrowable):带有错误信息和原因的构造函数。*/ \ No newline at end of file diff --git a/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/gtask/exception/NetworkFailureException.java b/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/gtask/exception/NetworkFailureException.java index b08cfb1..08e72ca 100644 --- a/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/gtask/exception/NetworkFailureException.java +++ b/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/gtask/exception/NetworkFailureException.java @@ -16,18 +16,30 @@ package net.micode.notes.gtask.exception; +// 自定义异常类,表示网络操作失败 public class NetworkFailureException extends Exception { private static final long serialVersionUID = 2107610287180234136L; + // 无参构造函数 public NetworkFailureException() { super(); } + // 带有错误信息的构造函数 public NetworkFailureException(String paramString) { super(paramString); } + // 带有错误信息和原因的构造函数 public NetworkFailureException(String paramString, Throwable paramThrowable) { super(paramString, paramThrowable); } } +/* +* 在这段Java代码中,我们有一个名为 NetworkFailureException 的类,它继承自 Exception。以下是对代码中各部分的注释: + +NetworkFailureException:自定义异常类,用于表示网络操作失败。 +serialVersionUID:序列化版本UID。 +NetworkFailureException():无参构造函数。 +NetworkFailureException(String paramString):带有错误信息的构造函数。 +NetworkFailureException(String paramString, Throwable paramThrowable):带有错误信息和原因的构造函数。*/ \ No newline at end of file diff --git a/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/widget/NoteWidgetProvider.java b/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/widget/NoteWidgetProvider.java index ec6f819..a08d2b8 100644 --- a/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/widget/NoteWidgetProvider.java +++ b/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/widget/NoteWidgetProvider.java @@ -32,19 +32,23 @@ import net.micode.notes.tool.ResourceParser; import net.micode.notes.ui.NoteEditActivity; import net.micode.notes.ui.NotesListActivity; +// 抽象类,用于管理便签小部件 public abstract class NoteWidgetProvider extends AppWidgetProvider { + // 定义用于查询数据库时需要的字段 public static final String [] PROJECTION = new String [] { NoteColumns.ID, NoteColumns.BG_COLOR_ID, NoteColumns.SNIPPET }; + // 定义查询结果的列索引 public static final int COLUMN_ID = 0; public static final int COLUMN_BG_COLOR_ID = 1; public static final int COLUMN_SNIPPET = 2; private static final String TAG = "NoteWidgetProvider"; + // 当小部件被删除时调用,更新数据库中与小部件相关的记录 @Override public void onDeleted(Context context, int[] appWidgetIds) { ContentValues values = new ContentValues(); @@ -57,6 +61,7 @@ public abstract class NoteWidgetProvider extends AppWidgetProvider { } } + // 从数据库中获取特定小部件的信息 private Cursor getNoteWidgetInfo(Context context, int widgetId) { return context.getContentResolver().query(Notes.CONTENT_NOTE_URI, PROJECTION, @@ -65,10 +70,12 @@ public abstract class NoteWidgetProvider extends AppWidgetProvider { null); } + // 更新小部件 protected void update(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { update(context, appWidgetManager, appWidgetIds, false); } + // 更新小部件的具体实现 private void update(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds, boolean privacyMode) { for (int i = 0; i < appWidgetIds.length; i++) { @@ -104,7 +111,7 @@ public abstract class NoteWidgetProvider extends AppWidgetProvider { rv.setImageViewResource(R.id.widget_bg_image, getBgResourceId(bgId)); intent.putExtra(Notes.INTENT_EXTRA_BACKGROUND_ID, bgId); /** - * Generate the pending intent to start host for the widget + * 生成启动小部件宿主应用的待定意图 */ PendingIntent pendingIntent = null; if (privacyMode) { @@ -124,9 +131,22 @@ public abstract class NoteWidgetProvider extends AppWidgetProvider { } } + // 获取小部件背景资源ID的抽象方法 protected abstract int getBgResourceId(int bgId); + // 获取小部件布局ID的抽象方法 protected abstract int getLayoutId(); + // 获取小部件类型的抽象方法 protected abstract int getWidgetType(); } +/* +* 在这段Java代码中,我们有一个名为 NoteWidgetProvider 的抽象类,它继承自 AppWidgetProvider。以下是对代码中各部分的注释: + +NoteWidgetProvider:抽象类,用于管理便签小部件。 +PROJECTION:定义了用于查询数据库时需要的字段。 +COLUMN_ID、COLUMN_BG_COLOR_ID、COLUMN_SNIPPET:定义了查询结果的列索引。 +onDeleted 方法:当小部件被删除时调用,更新数据库中与小部件相关的记录。 +getNoteWidgetInfo 方法:从数据库中获取特定小部件的信息。 +update 方法:更新小部件的具体实现。 +getBgResourceId、getLayoutId、getWidgetType:抽象方法,用于获取小部件背景资源ID、布局ID和小部件类型。*/ \ No newline at end of file diff --git a/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/widget/NoteWidgetProvider_2x.java b/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/widget/NoteWidgetProvider_2x.java index adcb2f7..d5df828 100644 --- a/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/widget/NoteWidgetProvider_2x.java +++ b/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/widget/NoteWidgetProvider_2x.java @@ -24,24 +24,38 @@ import net.micode.notes.data.Notes; import net.micode.notes.tool.ResourceParser; +// 便签小部件提供程序,用于2x大小的小部件 public class NoteWidgetProvider_2x extends NoteWidgetProvider { + + // 当小部件更新时调用 @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { super.update(context, appWidgetManager, appWidgetIds); } + // 获取小部件布局ID @Override protected int getLayoutId() { return R.layout.widget_2x; } + // 获取小部件背景资源ID @Override protected int getBgResourceId(int bgId) { return ResourceParser.WidgetBgResources.getWidget2xBgResource(bgId); } + // 获取小部件类型 @Override protected int getWidgetType() { return Notes.TYPE_WIDGET_2X; } } +/*在这段Java代码中,我们有一个名为 NoteWidgetProvider_2x 的类,它继承自 NoteWidgetProvider。以下是对代码中各部分的注释: + +NoteWidgetProvider_2x:便签小部件提供程序,用于2x大小的小部件。 +onUpdate 方法:当小部件更新时调用。 +getLayoutId 方法:获取小部件布局ID。 +getBgResourceId 方法:获取小部件背景资源ID。 +getWidgetType 方法:获取小部件类型。 +*/ \ No newline at end of file diff --git a/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/widget/NoteWidgetProvider_4x.java b/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/widget/NoteWidgetProvider_4x.java index c12a02e..807c605 100644 --- a/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/widget/NoteWidgetProvider_4x.java +++ b/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/widget/NoteWidgetProvider_4x.java @@ -24,23 +24,38 @@ import net.micode.notes.data.Notes; import net.micode.notes.tool.ResourceParser; +// 便签小部件提供程序,用于4x大小的小部件 public class NoteWidgetProvider_4x extends NoteWidgetProvider { + + // 当小部件更新时调用 @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { super.update(context, appWidgetManager, appWidgetIds); } + // 获取小部件布局ID protected int getLayoutId() { return R.layout.widget_4x; } + // 获取小部件背景资源ID @Override protected int getBgResourceId(int bgId) { return ResourceParser.WidgetBgResources.getWidget4xBgResource(bgId); } + // 获取小部件类型 @Override protected int getWidgetType() { return Notes.TYPE_WIDGET_4X; } } +/* +* 在这段Java代码中,我们有一个名为 NoteWidgetProvider_2x 的类,它继承自 NoteWidgetProvider。以下是对代码中各部分的注释: + +NoteWidgetProvider_2x:便签小部件提供程序,用于2x大小的小部件。 +onUpdate 方法:当小部件更新时调用。 +getLayoutId 方法:获取小部件布局ID。 +getBgResourceId 方法:获取小部件背景资源ID。 +getWidgetType 方法:获取小部件类型。 +* */ \ No newline at end of file diff --git a/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/~$teWidgetProvider.docx b/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/~$teWidgetProvider.docx new file mode 100644 index 0000000..a17f377 Binary files /dev/null and b/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/~$teWidgetProvider.docx differ diff --git a/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/新建 Microsoft Word 文档.docx b/小米标签及案例/源程序代码-小米便签-Notes-master/Notes-master/src/net/micode/notes/新建 Microsoft Word 文档.docx new file mode 100644 index 0000000..e69de29