2016-04-29 76 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我不想發出警報,這就是我發佈圖片的原因。如果你打開谷歌日曆,你可以添加事件,提醒和最新的功能是目標。我想調用新的提醒。也許這是不可能的,但我想確保我沒有錯過任何文檔。 – 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