Android 对于Calendars.CONTENT\u URI如何检测日历是否为只读?

Android 对于Calendars.CONTENT\u URI如何检测日历是否为只读?,android,calendar,Android,Calendar,假日和生日日历的事件显然无法修改。通常,如何判断日历的事件是否为只读?我猜我可以看看日历访问级别栏。任何人都知道,有什么价值要检查?p>除非有人纠正我,我会认为以下答案是正确的。 通过 我得到了一个不包括假日或生日日历的列表。因此,我假设列表中的任何日历都是可写的,因此,我的应用程序可以轻松地将假日和生日设置为只读。到目前为止,这个假设一直对我起作用。 < P>我会认为以下是正确的答案,除非有人纠正我。 通过 我得到了一个不包括假日或生日日历的列表。因此,我假设列表中的任何日历都是可写的,因此,

假日和生日日历的事件显然无法修改。通常,如何判断日历的事件是否为只读?我猜我可以看看日历访问级别栏。任何人都知道,有什么价值要检查?

p>除非有人纠正我,我会认为以下答案是正确的。 通过


我得到了一个不包括假日或生日日历的列表。因此,我假设列表中的任何日历都是可写的,因此,我的应用程序可以轻松地将假日和生日设置为只读。到目前为止,这个假设一直对我起作用。

< P>我会认为以下是正确的答案,除非有人纠正我。

通过


我得到了一个不包括假日或生日日历的列表。因此,我假设列表中的任何日历都是可写的,因此,我的应用程序可以轻松地将假日和生日设置为只读。到目前为止,这个假设对我有效。

是的,您需要检查
日历访问级别的值

您应该获得具有以下访问级别的所有日历:


完全访问日历


具有修改日历的完全访问权限,但不能修改 访问控制设置


具有修改日历的完全访问权限,但不能修改 访问控制设置


域管理员

这是一个返回所有可写日历的示例:

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);

是的,您需要检查
CALENDAR\u ACCESS\u LEVEL
的值

您应该获得具有以下访问级别的所有日历:


完全访问日历


具有修改日历的完全访问权限,但不能修改 访问控制设置


具有修改日历的完全访问权限,但不能修改 访问控制设置


域管理员

这是一个返回所有可写日历的示例:

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);

出于好奇,你是怎么知道的?我搜索了很多文档,但什么也没找到。另外,你能更详细地解释一下每个访问级别的含义吗?两个有相同的描述。显然,还有其他访问级别,您没有显示。了解所有这些都是什么意思会很有帮助。我所知道的只是你在你的黄色方框里复制的简洁的字符串。没有说明它们的含义。可以找到有关所有日历访问级别的文档。如您所见,还有5个级别无法修改日历(
CAL\u ACCESS\u FREEBUSY
CAL\u ACCESS\u NONE
CAL\u ACCESS\u OVERRIDE
CAL\u ACCESS\u READ
CAL\u response
)。黄色区域中的每个访问级别也可以单击并打开引用说明的文档。不幸的是,没有更多关于单一级别含义的详细信息。如果你称之为文档。这就是我开始的地方。这太差劲了。如果你愿意的话,就投我一票。我仍然认为现有的文档是蹩脚的。只有猜测或跟踪android源代码才能真正了解其中的一些含义(是的,有些是显而易见的)。我花了大量时间试图从android文档中获得意义,这大大减慢了我的开发速度。很多人也这么说。谷歌,开始做正确的事吧。出于好奇,你是怎么知道的?我搜索了很多文档,但什么也没找到。另外,你能更详细地解释一下每个访问级别的含义吗?两个有相同的描述。显然,还有其他访问级别,您没有显示。了解所有这些都是什么意思会很有帮助。我所知道的只是你在你的黄色方框里复制的简洁的字符串。没有说明它们的含义。可以找到有关所有日历访问级别的文档。如您所见,还有5个级别无法修改日历(
CAL\u ACCESS\u FREEBUSY
CAL\u ACCESS\u NONE
CAL\u ACCESS\u OVERRIDE
CAL\u ACCESS\u READ
CAL\u response
)。黄色区域中的每个访问级别也可以单击并打开引用说明的文档。不幸的是,没有更多关于单一级别含义的详细信息。如果你称之为文档。这就是我开始的地方。这太差劲了。如果你愿意的话,就投我一票。我仍然认为现有的文档是蹩脚的。只有猜测或跟踪android源代码才能真正了解其中的一些含义(是的,有些是显而易见的)。我花了大量时间试图从android文档中获得意义,这大大减慢了我的开发速度。很多人也这么说。谷歌,开始做它的权利。