2013-05-10 59 views
1

在我的應用中,用戶最多可以爲任務設置3個提醒,但每次按下「設置提醒」按鈕時,都會打開日曆應用。有沒有辦法設置日曆事件,而無需打開默認的日曆應用程序?我只想添加一個事件而不啓動日曆活動。在沒有打開日曆的情況下添加日曆活動

這是我的代碼看起來像現在:

Calendar beginTime = Calendar.getInstance(); 
beginTime.set(2013, Calendar.MAY, 10, 3, 00); 
startMillis = beginTime.getTimeInMillis(); 
Calendar endTime = Calendar.getInstance(); 
endTime.set(2012, Calendar.MAY, 10, 4, 00); 
endMillis = endTime.getTimeInMillis(); 

Intent intent = new Intent(Intent.ACTION_INSERT); 
intent.setType("vnd.android.cursor.item/event"); 
intent.putExtra(Events.TITLE, "Test Android"); 
intent.putExtra(Events.EVENT_LOCATION, "Test Location"); 
intent.putExtra(Events.DESCRIPTION, "Test Description Examples"); 

intent.putExtra(Events.DTSTART, startMillis); 
intent.putExtra(Events.DTEND, endMillis); 
intent.putExtra(Events.ALL_DAY, false); 
intent.putExtra(Events.EVENT_END_TIMEZONE, "Europe/London"); 


intent.putExtra(Events.ACCESS_LEVEL, Events.ACCESS_PRIVATE); 
intent.putExtra(Events.AVAILABILITY, Events.AVAILABILITY_BUSY); 

回答

8

這將是這個樣子:

final ContentValues event = new ContentValues(); 
    event.put(Events.CALENDAR_ID, 1); 

    event.put(Events.TITLE, title); 
    event.put(Events.DESCRIPTION, description); 
    event.put(Events.EVENT_LOCATION, location); 

    event.put(Events.DTSTART, startTimeMillis); 
    event.put(Events.DTEND, endTimeMillis); 
    event.put(Events.ALL_DAY, 0); // 0 for false, 1 for true 
    event.put(Events.HAS_ALARM, 1); // 0 for false, 1 for true 

    String timeZone = TimeZone.getDefault().getID(); 
    event.put(Events.EVENT_TIMEZONE, timeZone); 

    Uri baseUri; 
    if (Build.VERSION.SDK_INT >= 8) { 
     baseUri = Uri.parse("content://com.android.calendar/events"); 
    } else { 
     baseUri = Uri.parse("content://calendar/events"); 
    } 

    context.getContentResolver().insert(baseUri, event); 
+0

首先是什麼?PandoraUtil其次是你的代碼的最後一行說activity.getCon .....我必須創建一個新的活動或這應該this.getContentResolver?謝謝....無法找到所謂的PandoraUtil ...它屬於哪個軟件包...或者它是否被棄用?順便說一句我沒有使用模擬器,我的設備是nexus 7與運行Android 4.2.2 – Amjad 2013-05-10 14:24:04

+1

對不起,意外包括一個私人實用程序。我已經更新了這個例子,使之更清晰一些。您可以使用任何上下文來調用getContentResolver()。如果這是從一個活動中調用的,那麼最簡單的方法就是將活動本身用於上下文。否則,您通常應該使用Application上下文(context.getApplicationContext())。 – dhaag23 2013-05-13 20:45:33

+0

@ dhaag23:我使用http://stackoverflow.com/questions/11586054/android-insert-calendar-intent-without-alarm-reminder代碼做同樣的事情。它在低於4.0(ICS)的情況下工作良好。但超過4.0它不工作。任何建議?我試了很長時間 – 2013-06-19 15:26:07