0
我已经创建了一些事件并将数据存储在sqlite表中,但不是系统日历。但是,我希望为这些事件提供警报/提醒,这与存储在系统中的其他事件类似。Android:如何正确使用“CalendarAlerts”在报警中显示唯一的消息
参考以下代码,将事件的详细信息放入“CalendarAlerts”表中和广播接收器中,alertCursor用于查找开始时间接近当前时间的事件数据。
如果事件以“long”eventID存储在系统中,代码运行良好。但是,当我尝试将“sqlite事件”的数据与“字符串”eventID放在“CalendarAlerts”中时。它显示数据已成功插入表中,但我不会在“Alert Receiver”类中查询结果。
搜索谷歌一段时间,似乎并没有很多人谈论的话题“CalendarAlerts”。如果有人愿意分享这个问题的经验,那就太好了。
设置AlarmManager
Uri alertUri = CalendarAlerts.CONTENT_URI;
long alarmMillis = (long) mStart - (long)(min*60*1000);
ContentValues alertValues =AlertUtils.makeContentValues(eventIdentifier,mStart, mEnd,alarmMillis, 0);
context.getContentResolver().insert(alertUri, alertValues);
public static ContentValues makeContentValues(String eventId, long begin, long end,
long alarmTime, int minutes) {
ContentValues values = new ContentValues();
values.put(CalendarAlerts.EVENT_ID, eventId);
values.put(CalendarAlerts.BEGIN, begin);
values.put(CalendarAlerts.END, end);
values.put(CalendarAlerts.ALARM_TIME, alarmTime);
long currentTime = System.currentTimeMillis();
values.put(CalendarAlerts.CREATION_TIME, currentTime);
values.put(CalendarAlerts.RECEIVED_TIME, 0);
values.put(CalendarAlerts.NOTIFY_TIME, 0);
values.put(CalendarAlerts.STATE, CalendarAlerts.STATE_SCHEDULED);
values.put(CalendarAlerts.MINUTES, minutes);
return values;
}
AlertReceiver.java
Cursor alertCursor = cr.query(CalendarAlerts.CONTENT_URI, ALERT_PROJECTION,
(ACTIVE_ALERTS_SELECTION + currentMillis), ACTIVE_ALERTS_SELECTION_ARGS,
ACTIVE_ALERTS_SORT);
,这样你们居然把sqlite的事件进入系统使其工作?但是,如果你没有得到eventID,你将如何识别事件? –
没有得到事件ID没有识别事件,事件ID是唯一的,是的工作为SQLite事件到设备 –