安卓提醒意图

4

是否可以使用意图(intent)打开创建提醒,就像打开事件一样?我找不到任何解决方案。

Intent intent = new Intent(Intent.ACTION_INSERT)
        .setData(CalendarContract.Events.CONTENT_URI);
startActivity(intent);

我想调用这个:


3
可能是重复问题:https://dev59.com/X17Va4cB1Zd3GeqPMbqW - Nathanael
我认为他的意思更像是一个日历条目。 - Gabe Sechan
@Nathanael 我不想制造警报,这就是为什么我发布了图片。如果你打开 Google 日历,你可以添加事件、提醒和最新的功能是“目标”。我想调用新的提醒。可能不可能,但我想确保我没有在文档中遗漏任何东西。 - Martin
1
你找到了一种使用意图添加或设置默认的提醒分钟的解决方案吗? - user924
1个回答

1
你可以像这样实现它。你只需要调用这个方法,它会处理其余的部分。
public static void pushAppointmentsToCalender(Activity curActivity, 
                                              String title, long startDate) {

    Intent intent = new Intent(Intent.ACTION_EDIT);
    intent.setType("vnd.android.cursor.item/event");
    intent.putExtra("beginTime", startDate);
    intent.putExtra("allDay", true);
    intent.putExtra("endTime", startTime+24*60*60*1000);
    intent.putExtra(CalendarContract.Events.TITLE, title);
    curActivity.startActivity(intent);
}

但在此之前,请确保您已经表达了这些权限。

<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />

如果您正在使用Android API 23(6.0)或更高版本,建议您阅读API 23中新的权限模型here。并确保在运行时请求,这将有助于您的应用程序支持未来的Android版本。 更新 您应该尝试Sanjeev Kumar在此处建议的方法
 /** Adds Events and Reminders in Calendar. */
 private void addReminderInCalendar() {
     Calendar cal = Calendar.getInstance();
     Uri EVENTS_URI = Uri.parse(getCalendarUriBase(true) + "events");
     ContentResolver cr = getContentResolver();
     TimeZone timeZone = TimeZone.getDefault();
 
     /** Inserting an event in calendar. */
     ContentValues values = new ContentValues();
     values.put(CalendarContract.Events.CALENDAR_ID, 1);
     values.put(CalendarContract.Events.TITLE, "Sanjeev Reminder 01");
     values.put(CalendarContract.Events.DESCRIPTION, "A test Reminder.");
     values.put(CalendarContract.Events.ALL_DAY, 0);
     // event starts at 11 minutes from now
     values.put(CalendarContract.Events.DTSTART, cal.getTimeInMillis() + 1 * 60 * 1000);
     // ends 60 minutes from now
     values.put(CalendarContract.Events.DTEND, cal.getTimeInMillis() + 2 * 60 * 1000);
     values.put(CalendarContract.Events.EVENT_TIMEZONE, timeZone.getID());
     values.put(CalendarContract.Events.HAS_ALARM, 1);
     Uri event = cr.insert(EVENTS_URI, values);
 
     // Display event id.
     Toast.makeText(getApplicationContext(), "Event added :: ID :: " + event.getLastPathSegment(), Toast.LENGTH_SHORT).show();
 
     /** Adding reminder for event added. */
     Uri REMINDERS_URI = Uri.parse(getCalendarUriBase(true) + "reminders");
     values = new ContentValues();
     values.put(CalendarContract.Reminders.EVENT_ID, Long.parseLong(event.getLastPathSegment()));
     values.put(CalendarContract.Reminders.METHOD, Reminders.METHOD_ALERT);
     values.put(CalendarContract.Reminders.MINUTES, 10);
     cr.insert(REMINDERS_URI, values);
 }
 
 /** Returns Calendar Base URI, supports both new and old OS. */
 private String getCalendarUriBase(boolean eventUri) {
     Uri calendarURI = null;
     try {
         if (android.os.Build.VERSION.SDK_INT <= 7) {
             calendarURI = (eventUri) ? Uri.parse("content://calendar/") :
             Uri.parse("content://calendar/calendars");
         } else {
             calendarURI = (eventUri) ? Uri.parse("content://com.android.calendar/") : Uri
                     .parse("content://com.android.calendar/calendars");
         }
     } catch (Exception e) {
         e.printStackTrace();
     }
     return calendarURI.toString();
 }

哦,余数会相应地改变。 - Sibidharan
1
我很感激你的帮助,但是我的问题不在于如何创建一个事件和提醒,而是想要像使用Google Now或在Google日历中添加提醒一样调用提醒。也许现在还不可能实现这个功能。 - Martin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接