From 924cf108bd3832eebd559d73dea69f9595c6f196 Mon Sep 17 00:00:00 2001 From: abhishek gupta Date: Mon, 30 Sep 2019 00:06:57 +0530 Subject: [PATCH] "NEVER ASK ME AGAIN" status added in android RNCalendarEvents.authorizationStatus() used to return "denied" even if the user denied it with selecting the "Never ask me again" checkbox before. It wasn't returning "restricted" as expected. Added a rationale check to verify if the user has selected "Never ask me again" so it will now return "restricted". --- .../java/com/calendarevents/CalendarEvents.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/android/src/main/java/com/calendarevents/CalendarEvents.java b/android/src/main/java/com/calendarevents/CalendarEvents.java index f24c09b..98539a8 100644 --- a/android/src/main/java/com/calendarevents/CalendarEvents.java +++ b/android/src/main/java/com/calendarevents/CalendarEvents.java @@ -98,6 +98,16 @@ private boolean haveCalendarReadWritePermissions() { return writePermission == PackageManager.PERMISSION_GRANTED && readPermission == PackageManager.PERMISSION_GRANTED; } + + private boolean shouldShowRequestPermissionRationale() { + Activity currentActivity = getCurrentActivity(); + + boolean permission = ActivityCompat.shouldShowRequestPermissionRationale(currentActivity, + Manifest.permission.WRITE_CALENDAR); + + return permission; + } + //endregion private WritableNativeArray findEventCalendars() { @@ -1150,8 +1160,10 @@ public void getCalendarPermissions(Promise promise) { promise.resolve("authorized"); } else if (!permissionRequested) { promise.resolve("undetermined"); + } else if(this.shouldShowRequestPermissionRationale()) { + promise.resolve("denied"); } else { - promise.resolve("denied"); + promise.resolve("restricted"); } } @@ -1324,4 +1336,4 @@ public void uriForCalendar(Promise promise) { promise.resolve(CalendarContract.Events.CONTENT_URI.toString()); } //endregion -} \ No newline at end of file +}