2016-04-29 5 views
3

Можно ли открыть напоминание о создании с помощью намерения, как событие? Не удалось найти решение.Умение напоминать Android

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

Я хочу, чтобы вызвать это:

+3

Возможный дубликат: http://stackoverflow.com/questions/8664670/how-to-launch-alarm-clock- screen-using-intent-in-android – Nathanael

+0

Я думаю, что он больше похож на запись в календаре. –

+0

@ Nathanael Я не хочу сигнализировать, поэтому я разместил изображение. Если вы открываете календарь Google, вы можете добавить событие, напоминание, а новейшая функция - цель. Я хочу вызвать новое напоминание. Наверное, это невозможно, но я хотел быть уверенным, что ничего не пропустил в документации. – Martin

ответ

0

Вы можете реализовать это следующим образом. Все, что вам нужно сделать, это вызвать этот метод, и он позаботится обо всем остальном.

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.

UPDATE

Вы должны попробовать это, как было предложено Sanjeev Kumar in here

/** 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(); 
} 
+0

Это событие, а не напоминание ... – Martin

+0

О, остатки, соответственно изменится – Sibidharan

+0

@Martin Просто проверьте, обновите, как вам было нужно – Sibidharan