gpt4 book ai didi

android - 在 Android 中的特定日期创建日历事件?

转载 作者:太空宇宙 更新时间:2023-11-03 10:45:43 25 4
gpt4 key购买 nike

我有一个特定的要求,即创建一个将在特定日期发生的日历事件。这不是每周、每月、每年都会发生的情况,但它可能会持续 13 天、14 天、15 天等。我知道它会发生的日期,但未能设置重复日期。下面是我的代码

ContentValues calEvent = new ContentValues();
calEvent.put(CalendarContract.Events.CALENDAR_ID, 1);
calEvent.put(CalendarContract.Events.TITLE, title);
calEvent.put(CalendarContract.Events.DTSTART, d.getTime());
calEvent.put(CalendarContract.Events.DTEND, d.getTime()
+ (2 * 60 * 60 * 1000));
calEvent.put(CalendarContract.Events.HAS_ALARM, 1);
calEvent.put(CalendarContract.Events.EVENT_TIMEZONE, TimeZone
.getDefault().getID());
calEvent.put(CalendarContract.Events.EVENT_LOCATION, location);
calEvent.put(CalendarContract.Events.DESCRIPTION, description);
calEvent.put(CalendarContract.Events.RDATE, sdf1.format(d)
+ "T033000Z");
// calEvent.put(CalendarContract.Reminders.RRULE, value);
Uri uri = contentResolver.insert(
CalendarContract.Events.CONTENT_URI, calEvent);

// The returned Uri contains the content-retriever URI for the
// newly-inserted event, including its id
int id = Integer.parseInt(uri.getLastPathSegment());
// Toast.makeText(ctx, "Created Calendar Event " + id,
// Toast.LENGTH_SHORT).show();
eventId = eventId + (eventId.equalsIgnoreCase("") ? id : "," + id);
ContentValues calReminder = new ContentValues();

calReminder.put(CalendarContract.Reminders.MINUTES, minutes);
calReminder.put(CalendarContract.Reminders.EVENT_ID, id);
// calReminder.put(CalendarContract.Reminders.HAS_ALARM, 1);
calReminder.put(Reminders.METHOD, Reminders.METHOD_ALERT);
Uri uri1 = contentResolver.insert(
CalendarContract.Reminders.CONTENT_URI, calReminder);

// The returned Uri contains the content-retriever URI for the
// newly-inserted event, including its id
int id1 = Integer.parseInt(uri1.getLastPathSegment());
// Toast.makeText(ctx, "Created Calendar Reminder " + id1,
// Toast.LENGTH_SHORT).show();
reminderId = reminderId
+ (reminderId.equalsIgnoreCase("") ? id1 : "," + id1);

当我将 RDATE 与逗号分隔的日期值一起使用时,因为提供了开始日期和结束日期,将为开始日期和结束日期之间的所有日期创建事件。

最佳答案

Intent service_intent = new Intent(your application context,
your class.class);

PendingIntent pintent = PendingIntent.getService(
your application context, 0, service_intent, 0);

AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
// for 30 mint 60*60*1000
alarm.setRepeating(AlarmManager.RTC_WAKEUP,
cal.getTimeInMillis(), APP_DAY_FOR_SERVICE
* APP_HOUR_FOR_SERVICE
* APP_MINUT_FOR_SERVICE
* APP_SECOND_FOR_SERVICE * 1000,
pintent);

在此代码中,24 小时后将调用一个事件,因此如果您将 APP_DAY_FOR_SERVICE 更改为 2,则 48 小时后事件将是老虎,因此如果您想在特定日期之后调用事件,例如您从日历中选择日期,那么当天的分钟数当天并在 APP_DAY_FOR_SERVICE 中输入答案即可

APP_DAY_FOR_SERVICEAPP_HOUR_FOR_SERVICEAPP_MINUT_FOR_SERVICE 这些都是整数 如果你有任何疑问可以随时问

关于android - 在 Android 中的特定日期创建日历事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24358669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com