|
|
|
@ -38,16 +38,16 @@ import net.micode.notes.ui.NotesListActivity;
|
|
|
|
|
*/
|
|
|
|
|
public abstract class NoteWidgetProvider extends AppWidgetProvider {
|
|
|
|
|
// 定义查询便签数据库时需要的列
|
|
|
|
|
public static final String [] PROJECTION = new String [] {
|
|
|
|
|
public static final String[] PROJECTION = new String[]{
|
|
|
|
|
NoteColumns.ID, // 便签ID
|
|
|
|
|
NoteColumns.BG_COLOR_ID, // 背景颜色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;
|
|
|
|
|
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"; // 日志标签
|
|
|
|
|
|
|
|
|
@ -65,7 +65,7 @@ public abstract class NoteWidgetProvider extends AppWidgetProvider {
|
|
|
|
|
context.getContentResolver().update(Notes.CONTENT_NOTE_URI,
|
|
|
|
|
values,
|
|
|
|
|
NoteColumns.WIDGET_ID + "=?",
|
|
|
|
|
new String[] { String.valueOf(appWidgetIds[i])});
|
|
|
|
|
new String[]{String.valueOf(appWidgetIds[i])});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -79,7 +79,7 @@ public abstract class NoteWidgetProvider extends AppWidgetProvider {
|
|
|
|
|
return context.getContentResolver().query(Notes.CONTENT_NOTE_URI,
|
|
|
|
|
PROJECTION,
|
|
|
|
|
NoteColumns.WIDGET_ID + "=? AND " + NoteColumns.PARENT_ID + "<>?",
|
|
|
|
|
new String[] { String.valueOf(widgetId), String.valueOf(Notes.ID_TRASH_FOLDER) },
|
|
|
|
|
new String[]{String.valueOf(widgetId), String.valueOf(Notes.ID_TRASH_FOLDER)},
|
|
|
|
|
null);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -114,7 +114,7 @@ public abstract class NoteWidgetProvider extends AppWidgetProvider {
|
|
|
|
|
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]);
|
|
|
|
|
Log.e(TAG, "Multiple messages with the same widget id: " + appWidgetIds[i]);
|
|
|
|
|
c.close();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
@ -173,4 +173,48 @@ public abstract class NoteWidgetProvider extends AppWidgetProvider {
|
|
|
|
|
* @return 小部件类型
|
|
|
|
|
*/
|
|
|
|
|
protected abstract int getWidgetType();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 类注释
|
|
|
|
|
NoteWidgetProvider 类继承自 AppWidgetProvider,用于实现便签小部件的添加、删除、更新和启用等功能。它提供了一些抽象方法,子类需要实现这些方法以提供特定小部件的布局和背景资源。
|
|
|
|
|
onDeleted 方法
|
|
|
|
|
参数
|
|
|
|
|
context:当前应用的上下文。
|
|
|
|
|
appWidgetIds:被删除的小部件ID数组。
|
|
|
|
|
功能
|
|
|
|
|
当小部件被删除时,更新数据库中与小部件ID相关的便签信息,将小部件ID设置为无效。这确保了数据库中的数据与实际的小部件状态一致。
|
|
|
|
|
getNoteWidgetInfo 方法
|
|
|
|
|
参数
|
|
|
|
|
context:当前应用的上下文。
|
|
|
|
|
widgetId:小部件ID。
|
|
|
|
|
返回值
|
|
|
|
|
返回一个游标,包含与小部件ID相关的便签信息。
|
|
|
|
|
功能
|
|
|
|
|
查询数据库,获取与小部件ID相关的便签信息,包括便签ID、背景颜色ID和便签摘要。
|
|
|
|
|
update 方法
|
|
|
|
|
参数
|
|
|
|
|
context:当前应用的上下文。
|
|
|
|
|
appWidgetManager:用于管理小部件的 AppWidgetManager 对象。
|
|
|
|
|
appWidgetIds:需要更新的小部件ID数组。
|
|
|
|
|
privacyMode:是否为隐私模式。
|
|
|
|
|
功能
|
|
|
|
|
更新小部件的UI。根据小部件ID获取便签信息,设置背景资源和便签摘要,并生成用于启动小部件宿主的 PendingIntent。如果处于隐私模式,显示隐私模式的提示信息。
|
|
|
|
|
getBgResourceId 方法
|
|
|
|
|
参数
|
|
|
|
|
bgId:背景颜色ID。
|
|
|
|
|
返回值
|
|
|
|
|
返回小部件的背景资源ID。
|
|
|
|
|
功能
|
|
|
|
|
根据背景颜色ID,获取小部件的背景资源ID。子类需要实现此方法,以提供特定小部件的背景资源。
|
|
|
|
|
getLayoutId 方法
|
|
|
|
|
返回值
|
|
|
|
|
返回小部件的布局资源ID。
|
|
|
|
|
功能
|
|
|
|
|
提供小部件的布局资源ID,用于在更新小部件时加载正确的布局文件。子类需要实现此方法,以提供特定小部件的布局资源。
|
|
|
|
|
getWidgetType 方法
|
|
|
|
|
返回值
|
|
|
|
|
返回小部件的类型。
|
|
|
|
|
功能
|
|
|
|
|
提供小部件的类型,用于在处理小部件数据时区分不同大小的小部件。子类需要实现此方法,以提供特定小部件的类型。
|
|
|
|
|
*/
|