对于下面的代码,我使用了真实的id和伪造的id,除了伪造的id不会创建日历事件外,输出结果也没有任何区别:
int id = getCalendarId(); <-- returns a valid id
String timeZone = DateTimeZone.getDefault().toString();
String frequency = repeat.trim().toUpperCase();
ContentValues values = new ContentValues();
values.put( CalendarContract.Events.DTSTART, startInMillis );
values.put( CalendarContract.Events.DURATION, "P1800S" );
if( !frequency.equalsIgnoreCase( NO_REPEAT ) ) {
values.put(CalendarContract.Events.RRULE, "FREQ=" + frequency);
}
values.put( CalendarContract.Events.EVENT_TIMEZONE, timeZone );
values.put( CalendarContract.Events.CALENDAR_ID, id ); <------------------- this id
values.put( CalendarContract.Events.TITLE, title );
values.put( CalendarContract.Events.DESCRIPTION, description );
if( ContextCompat.checkSelfPermission( getActivity(), Manifest.permission.WRITE_CALENDAR ) == PackageManager.PERMISSION_GRANTED ) {
Uri uri = getActivity().getContentResolver().insert( CalendarContract.Events.CONTENT_URI, values );
if( uri != null ) {
Log.d("xxx", uri.toString());
}
}
登录以获取真实ID:
4736-4736 / com.example.test D / xxx: content://com.android.calendar/events/562
登录假ID:
5146-5146 / com.example.test D / xxx: 内容://com.android.calendar/events/563
那么如何区分对ContentResolver Insert
的好坏呢?