本文介绍了添加事件,本地日历不工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我工作的一个Android应用程序。我要补充活动,以原生的Android日历。所以,我想下面的code:
如果(Build.VERSION.SDK_INT> = 8){
l_eventUri = Uri.parse(内容://com.android.calendar/events);
}其他{
l_eventUri = Uri.parse(内容://日历/事件);
}光标光标= getContentResolver().query(Uri.parse(getCalendarUriBase(本)),新的String [] {CALENDAR_ID,显示名称},NULL,NULL,NULL);
cursor.moveToFirst();
//获取日历名称
字符串的CNAME [] =新的String [cursor.getCount()];
//获取日历ID
INT [] = CalIds新INT [cursor.getCount()];
的for(int i = 0; I< CNames.length;我++){
CalIds [I] = cursor.getInt(0);
CNAMES [I] = cursor.getString(1);
cursor.moveToNext();
}//获取日历
日历CAL = Calendar.getInstance();
乌里EVENTS_URI = Uri.parse(getCalendarUriBase(本)+事件);
ContentResolver的CR = getContentResolver();//事件插入
ContentValues值=新ContentValues();
values.put(CALENDAR_ID,111);
values.put(称号,提醒标题);
values.put(allDay,0);
values.put(DTSTART,cal.getTimeInMillis()+ 11 * 60 * 1000); //事件开始11分钟,从现在
values.put(DTEND,cal.getTimeInMillis()+ 60 * 60 * 1000); //从现在结束60分钟
values.put(说明,提醒说明);
//事件ID
values.put(_ ID,23);
// 0〜违约; 1〜保密; 2〜私有的; 3〜公
values.put(知名度,0);
// 0〜虚假的; 1〜真
values.put(hasAlarm,1);
//状态:0〜试探性的; 1〜证实; 2〜取消
values.put(eventStatus,1);
// 0〜不透明,没有时序冲突是允许的; 1〜透明度,让调度重叠
values.put(透明度,0);
乌里事件= cr.insert(EVENTS_URI,价值观);//插入提醒
乌里REMINDERS_URI = Uri.parse(getCalendarUriBase(本)+提醒);
值=新ContentValues();
values.put(事项标识,的Long.parseLong(event.getLastPathSegment()));
values.put(方法,1);
values.put(分钟,10);
cr.insert(REMINDERS_URI,价值观);私人字符串getCalendarUriBase(活动行为){
字符串calendarUriBase = NULL;
乌里日历= Uri.parse(内容://日历/日历);
光标managedCursor = NULL;
尝试{
managedCursor = act.managedQuery(日历,NULL,NULL,NULL,NULL);
}赶上(例外五){
} 如果(managedCursor!= NULL){
calendarUriBase =内容://日历/;
}其他{
日历= Uri.parse(内容://com.android.calendar/calendars);
尝试{
managedCursor = act.managedQuery(日历,NULL,NULL,NULL,NULL);
}赶上(例外五){
}
如果(managedCursor!= NULL){
calendarUriBase =内容://com.android.calendar/
}
}
返回calendarUriBase;
}
当我运行这个code,我正在抛出:IllegalArgumentException
。
java.lang.IllegalArgumentException异常:未知的URL内容://com.android.calendar/
我认为错误是因为 getCalendarUriBase()
方法。我搜索了很多其他方式,但到目前为止,大部分的开发者按照上述code段,因为这会为每一个Android的版本。如何解决呢?
解决方案
您错过了日历
当您尝试执行此行
光标光标= getContentResolver()查询(
Uri.parse(getCalendarUriBase(本))/ *< - 未知的URL内容* /
新的String [] {CALENDAR_ID,显示名称},
NULL,NULL,NULL);
造成抛出:IllegalArgumentException
。
只需添加日历
在 getCalendarUriBase(本)
。
光标光标= getContentResolver()查询(
Uri.parse(getCalendarUriBase(本)+日历),
新的String [] {_id,显示名},
NULL,NULL,NULL);
When adding an event, you need to include: calendar ID, start date, end date (or recurrence rule), and event timezone. You have included all but the timezone. Try adding
values.put("eventTimezone", TimeZone.getDefault().getID());
before inserting the event.
这篇关于添加事件,本地日历不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!