2011-04-06 83 views

回答

12

阅读从日历数据后刚刚尝试了这一点..

添加一个带发生事件的日历

为一个条目添加到特定的日历,我们需要配置日历项使用插入ContentValues如下:

ContentValues event = new ContentValues(); 

每个事件都需要被绑定到特定的日历,所以你会想设置的第一件事是日历的标识此事件插入:

event.put("calendar_id", calId); 

我们然后设置一些有关事件的基本信息,包括字符串字段,如事件标题,说明和位置。

event.put("title", "Event Title"); 
event.put("description", "Event Desc"); 
event.put("eventLocation", "Event Location"); 

配置事件的时间和日期有许多不同的选项。

我们可以设置事件的开始和结束的信息如下:

long startTime = START_TIME_MS; 
long endTime = END_TIME_MS; 
event.put("dtstart", startTime); 
event.put("dtend", endTime); 

如果我们增加一个生日或节日,我们会设置的入口是一个全天事件:

event.put("allDay", 1); // 0 for false, 1 for true 

这些信息足以满足大多数条目。但是,还有许多其他有用的日历条目属性。

例如,您可以设置事件状态暂定(0),证实了(1)或取消(2):

event.put("eventStatus", 1); 

您可以控制谁可以通过设置它的可见性默认看到此事件(0),保密(1),私人(2),或公共(3):

event.put("visibility", 0); 

您可以控制一个事件是否消耗时间通过其透明度设置为不透明(可以有时间冲突)上的日历(0)或透明(1)。

event.put("transparency", 0); 

您可以控制如下事件是否触发报警提醒:

event.put("hasAlarm", 1); // 0 for false, 1 for true 

一旦日历事件配置正确,我们已经准备好使用ContentResolver的插入新的日历进入相应的URI的日历事件:

Uri eventsUri = Uri.parse("content://calendar/events"); 
    Uri url = getContentResolver().insert(eventsUri, event); 

的insert()方法接触的日历内容提供商和尝试调用插入进入Appro公司priate用户日历。如果您导航到日历应用程序并启动它,则应该在相应的日历中看到您的日历条目。由于日历同步,因此如果您在网络上使用Google日历,则还会在线看到日历条目。

添加重复发生的事件的日历

您还可以配置定期日历事件。为此,您必须以重复规则的形式向事件添加更多字段。规则规范基于RFC2445

+0

'日历CAL = Calendar.getInstance(); Intent intent = new Intent(Intent.ACTION_EDIT); intent.setType(“vnd.android.cursor.item/event”); intent.putExtra(“beginTime”,cal.getTimeInMillis()); intent.putExtra(“allDay”,true); intent.putExtra(“rrule”,“FREQ = YEARLY”); intent.putExtra(“endTime”,cal.getTimeInMillis()+ 60 * 60 * 1000); intent.putExtra(“title”,“来自android应用程序的测试事件”); startActivity(意图);' 否则它可能会帮助你...! – Hussain 2011-04-14 05:34:43

+0

很棒的答案..帮了我很多。谢谢。 – 2011-05-12 12:18:16

+0

@Hussain:很好的信息。干杯 – 2012-11-21 06:20:33

1

这是该问题的确切的答案

Uri uri = Uri.parse("content://calendar/events"); 
    long eventId = calendeeventid; 
    Uri newuri = ContentUris.withAppendedId(uri, eventId); 
    Intent intent = new Intent(Intent.ACTION_VIEW,newuri); 
    Cursor cursor = getContentResolver().query(newuri, new String[]{"dtstart","dtend",},null, null, null); 
    if(cursor.getCount()>0) 
    { cursor.moveToFirst(); 
    intent.putExtra("beginTime", cursor.getLong(cursor.getColumnIndex("dtstart"))); 
    intent.putExtra("endTime", cursor.getLong(cursor.getColumnIndex("dtend"))); 
    }