AlarmInitReceiver.java

qijingxi
pbhqa7wr4 7 months ago
parent 9cd316a42c
commit 3060eadaca

@ -14,52 +14,67 @@
* limitations under the License. * limitations under the License.
*/ */
package net.micode.notes.ui; package net.micode.notes.ui; // 定义包名
import android.app.AlarmManager; import android.app.AlarmManager; // 导入AlarmManager类用于管理闹钟
import android.app.PendingIntent; import android.app.PendingIntent; // 导入PendingIntent类用于延迟执行的Intent
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver; // 导入BroadcastReceiver类用于接收广播
import android.content.ContentUris; import android.content.ContentUris; // 导入ContentUris类用于处理URI
import android.content.Context; import android.content.Context; // 导入Context类用于访问应用程序环境的全局信息
import android.content.Intent; import android.content.Intent; // 导入Intent类用于启动活动或服务
import android.database.Cursor; import android.database.Cursor; // 导入Cursor类用于遍历查询结果
import net.micode.notes.data.Notes;
import net.micode.notes.data.Notes.NoteColumns;
import net.micode.notes.data.Notes; // 导入Notes类用于访问笔记数据
import net.micode.notes.data.Notes.NoteColumns; // 导入NoteColumns类用于访问笔记列
/**
* AlarmInitReceiver广
*/
public class AlarmInitReceiver extends BroadcastReceiver { public class AlarmInitReceiver extends BroadcastReceiver {
private static final String [] PROJECTION = new String [] { // 定义查询所需的列
NoteColumns.ID, private static final String[] PROJECTION = new String[]{
NoteColumns.ALERTED_DATE NoteColumns.ID, // 笔记ID
NoteColumns.ALERTED_DATE // 提醒日期
}; };
private static final int COLUMN_ID = 0; // 列索引常量
private static final int COLUMN_ALERTED_DATE = 1; private static final int COLUMN_ID = 0; // ID列索引
private static final int COLUMN_ALERTED_DATE = 1; // 提醒日期列索引
/**
* 广
* @param context
* @param intent
*/
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
long currentDate = System.currentTimeMillis(); long currentDate = System.currentTimeMillis(); // 获取当前时间
// 查询所有设置了提醒的笔记
Cursor c = context.getContentResolver().query(Notes.CONTENT_NOTE_URI, Cursor c = context.getContentResolver().query(Notes.CONTENT_NOTE_URI,
PROJECTION, PROJECTION,
NoteColumns.ALERTED_DATE + ">? AND " + NoteColumns.TYPE + "=" + Notes.TYPE_NOTE, NoteColumns.ALERTED_DATE + ">? AND " + NoteColumns.TYPE + "=" + Notes.TYPE_NOTE,
new String[] { String.valueOf(currentDate) }, new String[]{String.valueOf(currentDate)}, // 当前时间作为查询条件
null); null);
// 如果查询结果不为空
if (c != null) { if (c != null) {
// 如果游标移动到第一条记录
if (c.moveToFirst()) { if (c.moveToFirst()) {
do { do {
long alertDate = c.getLong(COLUMN_ALERTED_DATE); long alertDate = c.getLong(COLUMN_ALERTED_DATE); // 获取提醒日期
Intent sender = new Intent(context, AlarmReceiver.class); Intent sender = new Intent(context, AlarmReceiver.class); // 创建Intent用于触发AlarmReceiver
// 设置数据URI包含笔记ID
sender.setData(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, c.getLong(COLUMN_ID))); sender.setData(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, c.getLong(COLUMN_ID)));
// 创建PendingIntent用于延迟执行
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, sender, 0); PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, sender, 0);
AlarmManager alermManager = (AlarmManager) context // 获取AlarmManager服务
.getSystemService(Context.ALARM_SERVICE); AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alermManager.set(AlarmManager.RTC_WAKEUP, alertDate, pendingIntent); // 设置闹钟
} while (c.moveToNext()); alarmManager.set(AlarmManager.RTC_WAKEUP, alertDate, pendingIntent);
} while (c.moveToNext()); // 继续遍历游标
} }
c.close(); c.close(); // 关闭游标
} }
} }
} }
Loading…
Cancel
Save