尝试将事件添加到Android日历时遇到错误

时间:2018-09-10 21:05:45

标签: android

从我的Android应用程序创建新的Calendar事件时遇到问题。这是我的代码:

ContentResolver cr = getActivity().getContentResolver();
ContentValues values = new ContentValues();
values.put(CalendarContract.Events.DTSTART, dtStart.toInstant(ZoneOffset.ofTotalSeconds(0)).toEpochMilli());
values.put(CalendarContract.Events.DTEND, dtEnd.toInstant(ZoneOffset.ofTotalSeconds(0)).toEpochMilli());
values.put(CalendarContract.Events.TITLE, edittext.getText().toString());
values.put(CalendarContract.Events.CALENDAR_ID, calId);
values.put(CalendarContract.Events.VISIBLE, 0);
values.put(CalendarContract.Events.EVENT_TIMEZONE, TimeZone.getDefault().getID());

if (ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.WRITE_CALENDAR) != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(getActivity(),
        new String[]{Manifest.permission.WRITE_CALENDAR},
        MY_PERMISSIONS_REQUEST_WRITE_CALENDAR);
}
Uri uri = cr.insert(CalendarContract.Events.CONTENT_URI, values);

我的清单上有:

<uses-permission android:name="android.permission.WRITE_CALENDAR"/>
<uses-permission android:name="android.permission.READ_CALENDAR"/>

我遇到以下错误:

java.lang.IllegalArgumentException:仅提供者可以写入可见内容

我环顾四周,但是找不到我做错的事情,我看到的所有代码示例基本上都与上面的相同。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

我认为您无法通过ContentResolver修改事件的可见性。注释掉行

values.put(CalendarContract.Events.VISIBLE, 0);

然后重试。

从此Android文档构建

Writing to Events