【发布时间】:2017-10-27 00:24:06
【问题描述】:
我正在尝试将事件添加到默认的 android 日历,而不要求用户确认保存事件。 (所以不是故意的)
以下代码没有编译错误或运行时错误。点击按钮后,不会显示错误,也不会向 Android 日历应用程序添加任何事件。
我已经检查了清单中的日历授权并检查了 graddle 中的 de min sdk 版本(我在 android studio 上工作)
public void onAddEventClicked(View view) {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_CALENDAR) != PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_CALENDAR) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);
}
else if(ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_CALENDAR) == PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_CALENDAR) == PackageManager.PERMISSION_GRANTED) {
ContentResolver cr = getContentResolver();
Calendar beginTime = Calendar.getInstance();
beginTime.set(2018, Calendar.OCTOBER, 27, 13, 30);
Calendar endTime = Calendar.getInstance();
endTime.set(2018, Calendar.OCTOBER, 27, 17, 30);
ContentValues values = new ContentValues();
values.put(CalendarContract.Events.DTSTART, beginTime.getTimeInMillis());
values.put(CalendarContract.Events.DTEND, endTime.getTimeInMillis());
values.put(CalendarContract.Events.TITLE, "doctor");
values.put(CalendarContract.Events.DESCRIPTION, "doctor appointment");
values.put(CalendarContract.Events.CALENDAR_ID, 0);
values.put(CalendarContract.Events.EVENT_TIMEZONE, "Europe/Paris");
values.put(CalendarContract.Events.EVENT_LOCATION, "Paris");
Uri EVENTS_URI = Uri.parse(CalendarContract.Events.CONTENT_URI.toString());
Uri uri = cr.insert(EVENTS_URI, values);
Button b = (Button) findViewById(R.id.addEventButton);
b.setText("Did it worked ?");
}
}
【问题讨论】:
-
你发现问题了吗??我也有同样的问题。这是因为日历 ID 不正确。首先,我们需要找出手机中所有日历的主日历 ID,然后使用该日历 ID 来创建事件。要获取主日历 ID,您可以按照 Malwinder Singh 的回答。我也尝试了相同的代码,令我惊讶的是,我得到了两个主日历 ID。我想知道使用哪一个。
标签: android calendar google-calendar-api android-calendar