From 0da651ce4b1bbba342439903116af1fe50db3b73 Mon Sep 17 00:00:00 2001 From: bowenxv <2913336346@qq.com> Date: Tue, 20 May 2025 22:38:51 +0800 Subject: [PATCH] v1.0 --- doc/卜文旭——技术博客.docx | Bin 0 -> 66881 bytes doc/卜文旭——质量分析报告.docx | Bin 0 -> 19322 bytes src/NoteWidgetProvider.java | 187 +++++++++++++++++++++ src/NoteWidgetProvider_2x.java | 73 ++++++++ src/NoteWidgetProvider_4x.java | 77 +++++++++ 5 files changed, 337 insertions(+) create mode 100644 doc/卜文旭——技术博客.docx create mode 100644 doc/卜文旭——质量分析报告.docx create mode 100644 src/NoteWidgetProvider.java create mode 100644 src/NoteWidgetProvider_2x.java create mode 100644 src/NoteWidgetProvider_4x.java diff --git a/doc/卜文旭——技术博客.docx b/doc/卜文旭——技术博客.docx new file mode 100644 index 0000000000000000000000000000000000000000..695cbddbf29ebe2876c07165e3ce9aa075b87015 GIT binary patch literal 66881 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 literal 0 HcmV?d00001 diff --git a/doc/卜文旭——质量分析报告.docx b/doc/卜文旭——质量分析报告.docx new file mode 100644 index 0000000000000000000000000000000000000000..504d218b9fe1e3792ccd85c09dc1e8ce74a06d4b GIT binary patch literal 19322 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 literal 0 HcmV?d00001 diff --git a/src/NoteWidgetProvider.java b/src/NoteWidgetProvider.java new file mode 100644 index 0000000..9ed21f1 --- /dev/null +++ b/src/NoteWidgetProvider.java @@ -0,0 +1,187 @@ +/* + * 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.widget; // 指定此类属于 net.micode.notes.widget 包中的一个子类。 + +import android.app.PendingIntent; +import android.appwidget.AppWidgetManager; +import android.appwidget.AppWidgetProvider; +import android.content.ContentValues; +import android.content.Context; +import android.content.Intent; +import android.database.Cursor; +import android.util.Log; +import android.widget.RemoteViews; +import net.micode.notes.R; +import net.micode.notes.data.Notes; +import net.micode.notes.data.Notes.NoteColumns; +import net.micode.notes.tool.ResourceParser; +import net.micode.notes.ui.NoteEditActivity; +import net.micode.notes.ui.NotesListActivity; // 导入必要的Android组件和业务逻辑接口,包括处理意图、远程视图、AppWidget管理等 + +/* + 抽象类,用于实现笔记小部件的功能。 + 提供了小部件的更新、删除等基础功能,具体的小部件布局和背景资源由子类实现。 + */ +public abstract class NoteWidgetProvider extends AppWidgetProvider { + /* + 数据库查询时需要投影的字段数组。 + 包括笔记的ID、背景颜色ID和片段。 + */ + public static final String[] PROJECTION = new String[]{ + NoteColumns.ID, // 笔记的ID + NoteColumns.BG_COLOR_ID, // 笔记的背景颜色ID + NoteColumns.SNIPPET // 笔记的片段 + }; + + /* + 定义字段在查询结果中的索引位置。 + */ + public static final int COLUMN_ID = 0; // ID字段的索引 + public static final int COLUMN_BG_COLOR_ID = 1; // 背景颜色ID字段的索引 + public static final int COLUMN_SNIPPET = 2; // 片段字段的索引 + + private static final String TAG = "NoteWidgetProvider"; // 日志标签 + + /* + 当小部件被删除时调用。 + 将与小部件关联的笔记的WIDGET_ID字段更新为无效值。 + @param context 上下文 + @param appWidgetIds 要删除的小部件ID数组 + */ + @Override + public void onDeleted(Context context, int[] appWidgetIds) { + ContentValues values = new ContentValues(); // 创建ContentValues对象用于更新数据 + values.put(NoteColumns.WIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); // 设置WIDGET_ID为无效值 + for (int i = 0; i < appWidgetIds.length; i++) { + context.getContentResolver().update(Notes.CONTENT_NOTE_URI, // 更新笔记数据 + values, + NoteColumns.WIDGET_ID + "=?", // 更新条件:WIDGET_ID等于当前小部件ID + new String[]{String.valueOf(appWidgetIds[i])}); + } + } + + /* + 查询与指定小部件ID关联的笔记信息 + @param context 上下文 + @param widgetId 小部件ID + @return 查询结果的Cursor + */ + private Cursor getNoteWidgetInfo(Context context, int widgetId) { + return context.getContentResolver().query(Notes.CONTENT_NOTE_URI, // 查询笔记数据 + PROJECTION, // 查询的字段 + NoteColumns.WIDGET_ID + "=? AND " + NoteColumns.PARENT_ID + "<>?", // 查询条件:WIDGET_ID等于widgetId且PARENT_ID不等于ID_TRASH_FOLDER + new String[]{String.valueOf(widgetId), String.valueOf(Notes.ID_TRASH_FOLER)}, // 查询条件的参数 + null); // 不指定排序 + } + + /* + 更新小部件。 + 如果未指定隐私模式,则直接调用update方法。 + @param context 上下文 + @param appWidgetManager 小部件管理器 + @param appWidgetIds 要更新的小部件ID数组 + */ + protected void update(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { + update(context, appWidgetManager, appWidgetIds, false); // 默认不启用隐私模式 + } + + /* + 更新小部件的核心逻辑。 + 根据小部件ID查询关联的笔记信息,并更新小部件的显示内容。 + @param context 上下文 + @param appWidgetManager 小部件管理器 + @param appWidgetIds 要更新的小部件ID数组 + @param privacyMode 是否启用隐私模式 + */ + private void update(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds, + boolean privacyMode) { + for (int i = 0; i < appWidgetIds.length; i++) { + if (appWidgetIds[i] != AppWidgetManager.INVALID_APPWIDGET_ID) { // 确保小部件ID有效 + int bgId = ResourceParser.getDefaultBgId(context); // 获取默认背景颜色ID + String snippet = ""; // 初始化笔记片段为空字符串 + Intent intent = new Intent(context, NoteEditActivity.class); // 创建编辑笔记的Intent + intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); // 设置Intent标志 + intent.putExtra(Notes.INTENT_EXTRA_WIDGET_ID, appWidgetIds[i]); // 添加小部件ID到Intent + intent.putExtra(Notes.INTENT_EXTRA_WIDGET_TYPE, getWidgetType()); // 添加小部件类型到Intent + + Cursor c = getNoteWidgetInfo(context, appWidgetIds[i]); // 查询与小部件关联的笔记信息 + if (c != null && c.moveToFirst()) { + if (c.getCount() > 1) { // 如果查询到多条记录,记录错误并返回 + Log.e(TAG, "Multiple message with same widget id:" + appWidgetIds[i]); + c.close(); + return; + } + snippet = c.getString(COLUMN_SNIPPET); // 获取笔记片段 + bgId = c.getInt(COLUMN_BG_COLOR_ID); // 获取笔记背景颜色ID + intent.putExtra(Intent.EXTRA_UID, c.getLong(COLUMN_ID)); // 添加笔记ID到Intent + intent.setAction(Intent.ACTION_VIEW); // 设置Intent动作 + } else { + snippet = context.getResources().getString(R.string.widget_havenot_content); // 如果未查询到笔记信息,显示默认内容 + intent.setAction(Intent.ACTION_INSERT_OR_EDIT); // 设置Intent动作 + } + + if (c != null) { + c.close(); // 关闭Cursor + } + + RemoteViews rv = new RemoteViews(context.getPackageName(), getLayoutId()); // 创建RemoteViews对象 + rv.setImageViewResource(R.id.widget_bg_image, getBgResourceId(bgId)); // 设置小部件背景图片 + intent.putExtra(Notes.INTENT_EXTRA_BACKGROUND_ID, bgId); // 添加背景颜色ID到Intent + + /* + 生成点击小部件时启动的PendingIntent。 + */ + PendingIntent pendingIntent = null; + if (privacyMode) { // 如果启用隐私模式 + rv.setTextViewText(R.id.widget_text, // 设置小部件文本为隐私模式提示 + context.getString(R.string.widget_under_visit_mode)); + pendingIntent = PendingIntent.getActivity(context, appWidgetIds[i], new Intent( + context, NotesListActivity.class), PendingIntent.FLAG_UPDATE_CURRENT); // 创建跳转到笔记列表的PendingIntent + } else { + rv.setTextViewText(R.id.widget_text, snippet); // 设置小部件文本为笔记片段 + pendingIntent = PendingIntent.getActivity(context, appWidgetIds[i], intent, // 创建跳转到笔记编辑的PendingIntent + PendingIntent.FLAG_UPDATE_CURRENT); + } + + rv.setOnClickPendingIntent(R.id.widget_text, pendingIntent); // 设置小部件点击事件 + appWidgetManager.updateAppWidget(appWidgetIds[i], rv); // 更新小部件 + } + } + } + + /* + 获取背景资源ID的抽象方法。 + 具体实现由子类提供。 + @param bgId 背景颜色ID + @return 背景资源ID + */ + protected abstract int getBgResourceId(int bgId); + + /* + 获取小部件布局ID的抽象方法。 + 具体实现由子类提供。 + @return 小部件布局ID + */ + protected abstract int getLayoutId(); + + /* + 获取小部件类型的抽象方法。 + 具体实现由子类提供。 + @return 小部件类型 + */ + protected abstract int getWidgetType(); +} \ No newline at end of file diff --git a/src/NoteWidgetProvider_2x.java b/src/NoteWidgetProvider_2x.java new file mode 100644 index 0000000..1047d7e --- /dev/null +++ b/src/NoteWidgetProvider_2x.java @@ -0,0 +1,73 @@ +/* + * 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.widget; // 包路径,表示该类属于 net.micode.notes.widget 包 + +import android.appwidget.AppWidgetManager; // 导入 AppWidgetManager,用于管理小部件 +import android.content.Context; // 导入 Context,用于获取应用上下文 + +import net.micode.notes.R; // 导入资源文件 +import net.micode.notes.data.Notes; // 导入笔记数据相关的类 +import net.micode.notes.tool.ResourceParser; // 导入资源解析工具类 + +/* + NoteWidgetProvider_2x 类,用于实现 2x 大小的笔记小部件。 + 继承自 NoteWidgetProvider 抽象类,实现了具体的布局、背景资源和小部件类型。 + */ +public class NoteWidgetProvider_2x extends NoteWidgetProvider { + /* + 当小部件需要更新时调用的方法。 + 调用父类的 update 方法来更新小部件。 + @param context 上下文 + *param appWidgetManager 小部件管理器 + @param appWidgetIds 需要更新的小部件 ID 数组 + */ + @Override + public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { + super.update(context, appWidgetManager, appWidgetIds); // 调用父类的 update 方法 + } + + /* + 获取小部件的布局 ID。 + 返回 2x 大小的小部件布局资源 ID。 + @return 小部件布局资源 ID + */ + @Override + protected int getLayoutId() { + return R.layout.widget_2x; // 返回 2x 大小的小部件布局资源 ID + } + + /* + 获取小部件的背景资源 ID。 + 根据背景颜色 ID,返回对应的 2x 大小的小部件背景资源 ID。 + @param bgId 背景颜色 ID + @return 背景资源 ID + */ + @Override + protected int getBgResourceId(int bgId) { + return ResourceParser.WidgetBgResources.getWidget2xBgResource(bgId); // 调用工具类获取背景资源 ID + } + + /* + 获取小部件的类型。 + 返回 2x 大小的小部件类型。 + @return 小部件类型 + */ + @Override + protected int getWidgetType() { + return Notes.TYPE_WIDGET_2X; // 返回 2x 大小的小部件类型 + } +} \ No newline at end of file diff --git a/src/NoteWidgetProvider_4x.java b/src/NoteWidgetProvider_4x.java new file mode 100644 index 0000000..7642d1f --- /dev/null +++ b/src/NoteWidgetProvider_4x.java @@ -0,0 +1,77 @@ +/* + * 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.widget; // 包路径,表示该类属于 net.micode.notes.widget 包 + +import android.appwidget.AppWidgetManager; // 导入 AppWidgetManager,用于管理小部件 +import android.content.Context; // 导入 Context,用于获取应用上下文 + +import net.micode.notes.R; // 导入资源文件 +import net.micode.notes.data.Notes; // 导入笔记数据相关的类 +import net.micode.notes.tool.ResourceParser; // 导入资源解析工具类 + +/* + NoteWidgetProvider_4x 类,用于实现 4x 大小的笔记小部件。 + 继承自 NoteWidgetProvider 抽象类,实现了具体的布局、背景资源和小部件类型。 + */ +public class NoteWidgetProvider_4x extends NoteWidgetProvider { + /* + 当小部件需要更新时调用的方法。 + 调用父类的 update 方法来更新小部件。 + + @param context 上下文 + @param appWidgetManager 小部件管理器 + @param appWidgetIds 需要更新的小部件 ID 数组 + */ + @Override + public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { + super.update(context, appWidgetManager, appWidgetIds); // 调用父类的 update 方法 + } + + /* + 获取小部件的布局 ID。 + 返回 4x 大小的小部件布局资源 ID。 + + @return 小部件布局资源 ID + */ + @Override + protected int getLayoutId() { + return R.layout.widget_4x; // 返回 4x 大小的小部件布局资源 ID + } + + /* + 获取小部件的背景资源 ID。 + 根据背景颜色 ID,返回对应的 4x 大小的小部件背景资源 ID。 + + @param bgId 背景颜色 ID + @return 背景资源 ID + */ + @Override + protected int getBgResourceId(int bgId) { + return ResourceParser.WidgetBgResources.getWidget4xBgResource(bgId); // 调用工具类获取背景资源 ID + } + + /* + 获取小部件的类型。 + 返回 4x 大小的小部件类型。 + + @return 小部件类型 + */ + @Override + protected int getWidgetType() { + return Notes.TYPE_WIDGET_4X; // 返回 4x 大小的小部件类型 + } +} \ No newline at end of file