@@ -166,24 +166,24 @@ public boolean onRequestPermissionsResult(
166
166
return false ;
167
167
}
168
168
169
- // Calendar permissions are split between READ and WRITE in Android, and split between READ
169
+ // Calendar permissions are split between WRITE and READ in Android, and split between WRITE
170
170
// and FULL ACCESS in the plugin. We need special logic for this translation.
171
171
final List <String > permissionList = Arrays .asList (permissions );
172
- final int calendarReadIndex = permissionList .indexOf (Manifest .permission .READ_CALENDAR );
173
172
final int calendarWriteIndex = permissionList .indexOf (Manifest .permission .WRITE_CALENDAR );
174
- // READ -> READ.
175
- if (calendarReadIndex >= 0 ) {
176
- final int readGrantResult = grantResults [calendarReadIndex ];
177
- final @ PermissionConstants .PermissionStatus int readStatus =
178
- PermissionUtils .toPermissionStatus (this .activity , Manifest .permission .READ_CALENDAR , readGrantResult );
179
- requestResults .put (PermissionConstants .PERMISSION_GROUP_CALENDAR_READ_ONLY , readStatus );
180
-
181
- // READ + WRITE -> FULL ACCESS.
182
- if (calendarWriteIndex >= 0 ) {
183
- final int writeGrantResult = grantResults [calendarWriteIndex ];
184
- final @ PermissionConstants .PermissionStatus int writeStatus =
185
- PermissionUtils .toPermissionStatus (this .activity , Manifest .permission .WRITE_CALENDAR , writeGrantResult );
186
- final @ PermissionConstants .PermissionStatus int fullAccessStatus = strictestStatus (readStatus , writeStatus );
173
+ // WRITE -> WRITE.
174
+ if (calendarWriteIndex >= 0 ) {
175
+ final int writeGrantResult = grantResults [calendarWriteIndex ];
176
+ final @ PermissionConstants .PermissionStatus int writeStatus =
177
+ PermissionUtils .toPermissionStatus (this .activity , Manifest .permission .WRITE_CALENDAR , writeGrantResult );
178
+ requestResults .put (PermissionConstants .PERMISSION_GROUP_CALENDAR_WRITE_ONLY , writeStatus );
179
+
180
+ // WRITE + READ -> FULL ACCESS.
181
+ final int calendarReadIndex = permissionList .indexOf (Manifest .permission .READ_CALENDAR );
182
+ if (calendarReadIndex >= 0 ) {
183
+ final int readGrantResult = grantResults [calendarReadIndex ];
184
+ final @ PermissionConstants .PermissionStatus int readStatus =
185
+ PermissionUtils .toPermissionStatus (this .activity , Manifest .permission .READ_CALENDAR , readGrantResult );
186
+ final @ PermissionConstants .PermissionStatus int fullAccessStatus = strictestStatus (writeStatus , readStatus );
187
187
requestResults .put (PermissionConstants .PERMISSION_GROUP_CALENDAR_FULL_ACCESS , fullAccessStatus );
188
188
// Support deprecated CALENDAR permission.
189
189
requestResults .put (PermissionConstants .PERMISSION_GROUP_CALENDAR , fullAccessStatus );
@@ -193,8 +193,8 @@ public boolean onRequestPermissionsResult(
193
193
for (int i = 0 ; i < permissions .length ; i ++) {
194
194
final String permissionName = permissions [i ];
195
195
196
- // READ_CALENDAR and WRITE_CALENDAR permission results have already been handled.
197
- if (permissionName .equals (Manifest .permission .READ_CALENDAR ) || permissionName .equals (Manifest .permission .WRITE_CALENDAR )) {
196
+ // WRITE_CALENDAR and READ_CALENDAR permission results have already been handled.
197
+ if (permissionName .equals (Manifest .permission .WRITE_CALENDAR ) || permissionName .equals (Manifest .permission .READ_CALENDAR )) {
198
198
continue ;
199
199
}
200
200
@@ -409,12 +409,11 @@ void requestPermissions(
409
409
Settings .ACTION_REQUEST_SCHEDULE_EXACT_ALARM ,
410
410
PermissionConstants .PERMISSION_CODE_SCHEDULE_EXACT_ALARM );
411
411
} else if (permission == PermissionConstants .PERMISSION_GROUP_CALENDAR_FULL_ACCESS || permission == PermissionConstants .PERMISSION_GROUP_CALENDAR ) {
412
- // Deny CALENDAR_FULL_ACCESS permission if manifest is not listing both read- and write permissions.
413
- // Otherwise, we will only ask for READ permission and think full access is granted.
412
+ // Deny CALENDAR_FULL_ACCESS permission if manifest is not listing both write- and read permissions.
414
413
final boolean isValidManifest = isValidManifestForCalendarFullAccess ();
415
414
if (isValidManifest ) {
416
- permissionsToRequest .add (Manifest .permission .READ_CALENDAR );
417
415
permissionsToRequest .add (Manifest .permission .WRITE_CALENDAR );
416
+ permissionsToRequest .add (Manifest .permission .READ_CALENDAR );
418
417
pendingRequestCount += 2 ;
419
418
} else {
420
419
requestResults .put (permission , PermissionConstants .PERMISSION_STATUS_DENIED );
@@ -650,19 +649,19 @@ private int checkBluetoothPermissionStatus() {
650
649
}
651
650
652
651
/**
653
- * Checks if the manifest contains both {@link Manifest.permission#READ_CALENDAR } and
654
- * {@link Manifest.permission#WRITE_CALENDAR } permission declarations.
652
+ * Checks if the manifest contains both {@link Manifest.permission#WRITE_CALENDAR } and
653
+ * {@link Manifest.permission#READ_CALENDAR } permission declarations.
655
654
*/
656
655
private boolean isValidManifestForCalendarFullAccess () {
657
656
List <String > names = PermissionUtils .getManifestNames (context , PermissionConstants .PERMISSION_GROUP_CALENDAR_FULL_ACCESS );
658
- final boolean readInManifest = names != null && names .contains (Manifest .permission .READ_CALENDAR );
659
657
final boolean writeInManifest = names != null && names .contains (Manifest .permission .WRITE_CALENDAR );
660
- final boolean validManifest = readInManifest && writeInManifest ;
658
+ final boolean readInManifest = names != null && names .contains (Manifest .permission .READ_CALENDAR );
659
+ final boolean validManifest = writeInManifest && readInManifest ;
661
660
if (!validManifest ) {
662
- if (!readInManifest )
663
- Log .d (PermissionConstants .LOG_TAG , Manifest .permission .READ_CALENDAR + " missing in manifest" );
664
661
if (!writeInManifest )
665
662
Log .d (PermissionConstants .LOG_TAG , Manifest .permission .WRITE_CALENDAR + " missing in manifest" );
663
+ if (!readInManifest )
664
+ Log .d (PermissionConstants .LOG_TAG , Manifest .permission .READ_CALENDAR + " missing in manifest" );
666
665
return false ;
667
666
}
668
667
return true ;
0 commit comments