对于我的一个应用程序,我们必须在日历中插入一个事件。
long calID = 3;
long startMillis = 0;
long endMillis = 0;
Calendar beginTime = Calendar.getInstance();
beginTime.set(2012, 8, 10, 7, 30);
startMillis = beginTime.getTimeInMillis();
Calendar endTime = Calendar.getInstance();
endTime.set(2012, 8, 10, 8, 45);
endMillis = endTime.getTimeInMillis();
ContentResolver cr = getContentResolver();
ContentValues values = new ContentValues();
values.put(Events.DTSTART, startMillis);
values.put(Events.DTEND, endMillis);
values.put(Events.TITLE, "Jazzercise");
values.put(Events.DESCRIPTION, "Group workout");
values.put(Events.CALENDAR_ID, calID);
values.put(Events.EVENT_TIMEZONE, "America/Los_Angeles");
Uri uri = cr.insert(CalendarContract.Calendars.CONTENT_URI, values);
// get the event ID that is the last element in the Uri
long eventID = Long.parseLong(uri.getLastPathSegment());
Log.d("MainActivity", "addCalendarEvents :: " + "eventID :: "+eventID);
Cursor cursor = cr.query(Events.CONTENT_URI, null, Events.TITLE +"='Jazzercise'", null, null);
Log.d("MainActivity", "addCalendarEvents :: " + "cursor :: "+cursor.getCount());
在http://developer.android.com/guide/topics/providers/calendar-provider.html上提供 但是,首先它给了我一个错误
Failed to get type for: content://com.android.calendar (Unknown URL content://com.android.calendar)
光标数也是零。当我尝试用标题搜索时。 注意:我尝试使用intents服务添加事件,但是在添加事件时我不希望用户自行决定。
我在Galaxy Nexus(4.1)和Nexus S(4.1)上进行了测试。
有关与ICS一起使用的正确用户界面的任何帮助吗?
BR, Jayshil
答案 0 :(得分:4)
我已经弄清楚了。这一行:
Failed to get type for: content://com.android.calendar (Unknown URL content://com.android.calendar)
是一个完整的红色鲱鱼(即无关紧要)。这只是一些执行基础设施工作的框架代码,as seen here。
问题在于文档 - 如果你像我一样,你可能希望long calID = 3;
成为一些有效的日历ID。 这不是有效的ID,为了记录而是占位符。
如果你使用的是空模拟器,你正在使用上面的代码做什么,就是在一个不存在的日历中插入一个条目,即无处可见。
您需要的是:
简而言之 - 文档和调试消息不足以防止白痴;)。
答案 1 :(得分:0)
您是否在清单文件中拥有正确的权限?
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
这可能是您所看到的错误原因的一部分。
答案 2 :(得分:0)
content://com.android.calendar - problem is here.
它的压光机。
尝试使用此代码:
Uri mCalendarsUri;
if (Build.VERSION.SDK_INT >= 8) {
mCalendarsUri = Uri.parse("content://com.android.calendar/calendars");
} else {
mCalendarsUri = Uri.parse("content://calendar/calendars");
}