我花了几个小时尝试使用日历提供程序将日历事件添加到主日历中,但没有运气。
例如:
RewriteEngine on
RewriteCond %{ENV:GEO_COUNTRY} ^usa$ [NC]
RewriteRule ^ - [F,L]
有人可以在给定的日历中提供插入事件的工作示例吗?
我试图找到一些我在互联网上找到的例子,但是没有一个对我不起作用。
非常感谢您的任何建议。
答案 0 :(得分:0)
查看CalendarContract.Events,列出了添加新活动所需的字段。
另请注意,时间戳以毫秒为单位,而不是以秒为单位。您的示例事件将在1970年的某个地方举行。
以下值会将当前时间的一小时事件插入ID为1
的日历中。
ContentValues values = new ContentValues();
long now = System.currentTimeMillis();
values.put(CalendarContract.Events.DTSTART, now);
values.put(CalendarContract.Events.DTEND, now + 3600*1000 /* one hour later */);
values.put(CalendarContract.Events.TITLE, "TEST");
values.put(CalendarContract.Events.DESCRIPTION, "DESC");
values.put(CalendarContract.Events.EVENT_TIMEZONE, TimeZone.getDefault().getID());
// default calendar
values.put(CalendarContract.Events.CALENDAR_ID, 1);
getContentResolver().insert(CalendarContract.Events.CONTENT_URI, values);
请注意,可能没有ID为1
的日历。您应首先查找现有日历(确保只查找可写日历)。
要插入全天活动,请确保DTSTART
和DTEND
可被24 * 3600 * 1000(即常规日的毫秒数)整除,并设置ALL_DAY
到1
。
请勿使用DURATION
,这仅适用于重复发生的事件。
我已经添加了两行来完成该示例。我刚刚测试了这段代码。给出的示例适用于我,并完全按照它应该做的那样。
确保您撰写的日历存在且可见。
另请确保您的AndroidManifest.xml
包含以下条目:
<uses-permission android:name="android.permission.READ_CALENDAR"/>
<uses-permission android:name="android.permission.WRITE_CALENDAR"/>
如果您在模拟器中进行测试或设备已植根,则可以通过在设备(或模拟器)上的shell上运行以下命令来验证事件是否存在:
cd /data/data/com.android.providers.calendar/databases/
sqlite3 calendar.db --line "select * from events where title='TEST' and description='DESC'"
为了完整起见,这是我的Android 5.1模拟器上返回的命令(在事件同步之前):
_id = 18172
_sync_id =
dirty = 1
mutators = com.example.calendartest
lastSynced = 0
calendar_id = 1
title = TEST
eventLocation =
description = DESC
eventColor =
eventColor_index =
eventStatus =
selfAttendeeStatus = 0
dtstart = 1452004529497
dtend = 1452008129497
eventTimezone = Europe/Amsterdam
duration =
allDay = 0
accessLevel = 0
availability = 0
hasAlarm = 0
hasExtendedProperties = 0
rrule =
rdate =
exrule =
exdate =
original_id =
original_sync_id =
originalInstanceTime =
originalAllDay =
lastDate = 1452008129497
hasAttendeeData = 0
guestsCanModify = 0
guestsCanInviteOthers = 1
guestsCanSeeGuests = 1
organizer = test@example.com
isOrganizer =
deleted = 0
eventEndTimezone =
customAppPackage =
customAppUri =
uid2445 =
sync_data1 =
sync_data2 =
sync_data3 =
sync_data4 =
sync_data5 =
sync_data6 =
sync_data7 =
sync_data8 =
sync_data9 =
sync_data10 =
日历1
是由test@example.com
拥有的测试日历。