我面临着奇怪的问题。
我正在尝试在calendar
和reminder
中添加活动。除了具有Marshmallow - 6.0
当我尝试添加事件时,它还会返回我的事件ID。即使我在这里获得了活动ID,I can not see events added in my calendar
ContentValues event = new ContentValues();
event.put("calendar_id", 1);
event.put("title", "Match");
event.put("description",PTGConstantMethod.validateString(match.getMatch_name()));
event.put("eventLocation", match.getVenue());
event.put("eventTimezone", TimeZone.getDefault().getID());
event.put("dtstart", startDate.getTime());
event.put("dtend", endDate);
event.put("allDay", 0); // 0 for false, 1 for true
event.put("eventStatus", 1);
event.put("hasAlarm", 1); // 0 for false, 1 for true
Uri eventUri = context.getApplicationContext()
.getContentResolver()
.insert(Events.CONTENT_URI, event);
long eventID = Long.parseLong(eventUri.getLastPathSegment());
我在这里添加提醒,
ContentValues reminders = new ContentValues();
reminders.put("event_id", eventID);
reminders.put("method", CalendarContract.Reminders.METHOD_ALERT);
reminders.put("minutes", minutes);
context.getApplicationContext().getContentResolver()
.insert(Reminders.CONTENT_URI, reminders);
但是在添加提醒时应用崩溃了。这是我的日志。
android.database.sqlite.SQLiteException 在android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:179) 在android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135) 在android.content.ContentProviderProxy.insert(ContentProviderNative.java:476) 在android.content.ContentResolver.insert(ContentResolver.java:1231)
在我的build.gradle中
minSdkVersion 14
targetSdkVersion 22
我终于发现没有event.put("calendar_id", 1);
的任何日历。那我怎么能得到app默认日历?
我尝试添加新日历并添加事件。
ContentValues calendar = new ContentValues();
calendar.put(CalendarContract.Calendars.NAME, context.getResources().getString(R.string.app_name));
calendar.put(CalendarContract.Calendars.CALENDAR_DISPLAY_NAME, context.getResources().getString(R.string.app_name)+" Calendar");
calendar.put(CalendarContract.Calendars.VISIBLE, true);
Uri uri = context.getApplicationContext()
.getContentResolver()
.insert(CalendarContract.Calendars.CONTENT_URI, calendar);
long calendarId = Long.parseLong(uri.getLastPathSegment());
但我无法在日历应用中看到此日历。当我尝试使用这个新日历添加事件时。事件会显示但是点击事件后,我的默认日历应用程序就会崩溃。在将新日历添加到默认日历应用程序时,我做错了什么?感谢。
答案 0 :(得分:2)
很抱歉以这种方式发布答案,但我在Android M日历中手动添加事件时发现,它说我们需要将帐户添加到日历帐户才能添加事件。所以我猜测,除非我们不将日历添加或映射到至少一个帐户,否则我们无法手动或以编程方式将事件添加到Android M设备日历中。
答案 1 :(得分:0)
答案 2 :(得分:0)
也许你想在Fragment中使用。
首次使用时:
super.requestPermissions( new String[]{Manifest.permission.WRITE_CALENDAR}, MY_PERMISSIONS_REQUEST_WRITE_CALENDAR);
内部片段,您需要调用:
FragmentCompat.requestPermissions(permissionsList, RequestCode)
注意:强>
ActivityCompat.requestPermissions(Activity, permissionsList, RequestCode);
在gradle中为FragmentCompat类添加此库。
compile 'com.android.support:support-v13:version_of_library'