我已成功将事件添加到Native日历,并且适用于Android API Level 14或更高版本。
我试过@ VishalKhakhkhar的代码,但我仍然无法解决这个问题?我收到错误:在运行2.3.6的设备上测试时,没有找到处理Intent {act = android.intent.action.EDIT typ = vnd.android.cursor.item / event 的活动< / p>
请参阅下面的更新代码,尝试解决此问题: -
Button btnEvents = (Button) findViewById(R.id.button1);
btnEvents.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
long startMillis = 0;
long endMillis = 0;
Calendar beginTime = Calendar.getInstance();
beginTime.set(2014, 1, 16, 16, 0);
startMillis = beginTime.getTimeInMillis();
Calendar endTime = Calendar.getInstance();
endTime.set(2014, 1, 16, 22, 30);
endMillis= endTime.getTimeInMillis();
if (Build.VERSION.SDK_INT >= 14) {
Intent intent = new Intent(Intent.ACTION_EDIT).setData(Events.CONTENT_URI)
.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, startMillis)
.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endMillis)
.putExtra(Events.TITLE, "Title")
.putExtra(Events.DESCRIPTION, "Description")
.putExtra(Events.EVENT_LOCATION, "Location")
.putExtra(Reminders.HAS_ALARM, true)
.putExtra(Reminders.METHOD, Reminders.METHOD_DEFAULT);
startActivity(intent);
} else {
Intent intent = new Intent(Intent.ACTION_EDIT);
intent.setType("vnd.android.cursor.item/event");
intent.putExtra("title", "Title");
intent.putExtra("description", "Description");
intent.putExtra("beginTime", startMillis);
intent.putExtra("allDay", false);
intent.putExtra("endTime", endTime.endMillis);
intent.putExtra("eventLocation", "Location");
intent.putExtra("hasAlarm", 1);
startActivity(intent);
}
}
});
}
答案 0 :(得分:0)
如果你想直接在日历中添加一个事件,即没有打开意图,你可以使用以下代码..,
try
{
Calendar calendarStart = getCalendarFromISO(startDate);
Calendar calendarEnd = getCalendarFromISO(endDate);
Calendar cal = Calendar.getInstance();
cal.setTimeZone(TimeZone.getTimeZone("GMT-1"));
ContentResolver cr = this.getContentResolver();
ContentValues values = new ContentValues();
values.put(Events.DTSTART, calendarStart.getTimeInMillis());
values.put(Events.DTEND, calendarEnd.getTimeInMillis());
values.put(Events.TITLE, title);
// values.put(Events.DESCRIPTION, description);
values.put(Events.CALENDAR_ID, 1);
// values.put("rrule", "FREQ=DAILY");
// values.put(Events.EVENT_LOCATION, location);
values.put(Events.EVENT_TIMEZONE, TimeZone.getDefault().getID());
// Provider for Calendar
if (android.os.Build.VERSION.SDK_INT <= 7) {
eventsUri = Uri.parse("content://calendar/events");
} else
{
eventsUri = Uri.parse("content://com.android.calendar/events");
}
Uri uri = cr.insert(eventsUri, values);
//Returns the id for last added event
eventID = Long.parseLong(uri.getLastPathSegment());
Log.v("Calendar", "Calender Event Added" + eventID );
}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//格式化日期的方法
public static Calendar getCalendarFromISO(String dateString) {
//dateString = dateString.trim().replaceAll(":00$", "00"); // Changing format for SimpleDateFormat
Calendar calendar = Calendar.getInstance(TimeZone.getDefault(), Locale.getDefault());
SimpleDateFormat dateformat = new SimpleDateFormat(ISO8601DATEFORMAT, Locale.getDefault());
try {
Date date = dateformat.parse(dateString);
calendar.setTime(date);
} catch (ParseException e) {
e.printStackTrace();
}
return calendar;
}
答案 1 :(得分:0)
试试这个
if (Build.VERSION.SDK_INT >= 14) {
Intent intent = new Intent(Intent.ACTION_EDIT).setData(Events.CONTENT_URI)
.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, beginTime.getTimeInMillis())
.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endTime.getTimeInMillis()).putExtra(Events.TITLE, eventname)
.putExtra(Events.DESCRIPTION, strDesctription)
.putExtra(Events.EVENT_LOCATION, eventLoc).putExtra(Events.AVAILABILITY, Events.AVAILABILITY_BUSY)
.putExtra(Reminders.HAS_ALARM, true).putExtra(Reminders.METHOD, Reminders.METHOD_DEFAULT).putExtra(Reminders.DURATION, 45)
.putExtra(Reminders.MINUTES, 60);
mContext.startActivity(intent);
} else {
Intent intent = new Intent(Intent.ACTION_EDIT);
intent.setType("vnd.android.cursor.item/event");
intent.putExtra("title", eventname);
intent.putExtra("description", strDesctription);
intent.putExtra("beginTime", beginTime.getTimeInMillis());
intent.putExtra("allDay", false);
intent.putExtra("endTime", endTime.getTimeInMillis());
intent.putExtra("eventLocation", eventLoc);
intent.putExtra("hasAlarm", 1);
mContext.startActivity(intent);
}
答案 2 :(得分:0)
你得到的事实
找不到活动来处理Intent {act = android.intent.action.EDIT 典型值= vnd.android.cursor.item /事件
使用该特定设备意味着在其上没有注册可以处理意图的应用程序。期。
您可以做的最好的事情就是捕获异常并向用户显示一条消息,告知他/她的设备无法处理该操作。
您可以做的其他事情是建议安装可以处理它的应用程序,即日历类型的应用程序。