从我的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:仅提供者可以写入可见内容
我环顾四周,但是找不到我做错的事情,我看到的所有代码示例基本上都与上面的相同。任何帮助表示赞赏。
答案 0 :(得分:1)
我认为您无法通过ContentResolver修改事件的可见性。注释掉行
values.put(CalendarContract.Events.VISIBLE, 0);
然后重试。
从此Android文档构建