假日和生日日历的事件显然无法修改。一般来说,如何判断日历的事件是否为只读?我猜我可以查看CALENDAR_ACCESS_LEVEL列。任何人都知道,以及要检查的价值是什么?
答案 0 :(得分:5)
是的,您需要检查CALENDAR_ACCESS_LEVEL
的值。
您应该获得具有以下访问级别的所有日历:
CAL_ACCESS_OWNER
完全访问日历
CAL_ACCESS_EDITOR
完全访问修改日历,但不是 访问控制设置
CAL_ACCESS_CONTRIBUTOR
完全访问修改日历,但不是 访问控制设置
CAL_ACCESS_ROOT
域管理员
这是一个返回所有可写日历的示例:
String selection = "(" + CalendarContract.Calendars.CALENDAR_ACCESS_LEVEL + " = ? OR "
+ CalendarContract.Calendars.CALENDAR_ACCESS_LEVEL + " = ? OR "
+ CalendarContract.Calendars.CALENDAR_ACCESS_LEVEL + " = ? OR "
+ CalendarContract.Calendars.CALENDAR_ACCESS_LEVEL + " = ?)";
String[] selectionArgs = new String[]{
Integer.toString(CalendarContract.Calendars.CAL_ACCESS_OWNER),
Integer.toString(CalendarContract.Calendars.CAL_ACCESS_EDITOR),
Integer.toString(CalendarContract.Calendars.CAL_ACCESS_CONTRIBUTOR),
Integer.toString(CalendarContract.Calendars.CAL_ACCESS_ROOT)};
Cursor cursor = getContentResolver().query(CalendarContract.Calendars.CONTENT_URI, null, selection, selectionArgs, null);
答案 1 :(得分:3)
除非有人纠正我,否则我会认为以下是正确答案。
通过
Cursor calCursor = context.getContentResolver().query(
Calendars.CONTENT_URI,
projection, // whatever cols you want
(Calendars.VISIBLE + " = 1 and " +
Calendars.CALENDAR_ACCESS_LEVEL + " >= " + Calendars.CAL_ACCESS_CONTRIBUTOR),
null,
Calendars._ID + " ASC");
我收到一份不包含假日或生日日历的清单。所以,我假设我得到的列表中的任何日历都是可写的,因此,我的应用程序可以轻松地让假期和生日只读。到目前为止,这个假设对我有用。