diff --git a/android/capacitor/src/main/java/com/getcapacitor/Bridge.java b/android/capacitor/src/main/java/com/getcapacitor/Bridge.java index de1bad88b..9e06a2c97 100644 --- a/android/capacitor/src/main/java/com/getcapacitor/Bridge.java +++ b/android/capacitor/src/main/java/com/getcapacitor/Bridge.java @@ -1214,42 +1214,44 @@ protected boolean validatePermissions(Plugin plugin, PluginCall savedCall, Map getPermissionStates(Plugin plugin) { Map permissionsResults = new HashMap<>(); CapacitorPlugin annotation = plugin.getPluginHandle().getPluginAnnotation(); - for (Permission perm : annotation.permissions()) { - // If a permission is defined with no permission constants, return GRANTED for it. - // Otherwise, get its true state. - if (perm.strings().length == 0 || (perm.strings().length == 1 && perm.strings()[0].isEmpty())) { - String key = perm.alias(); - if (!key.isEmpty()) { - PermissionState existingResult = permissionsResults.get(key); - - // auto set permission state to GRANTED if the alias is empty. - if (existingResult == null) { - permissionsResults.put(key, PermissionState.GRANTED); - } - } - } else { - for (String permString : perm.strings()) { - String key = perm.alias().isEmpty() ? permString : perm.alias(); - PermissionState permissionStatus; - if (ActivityCompat.checkSelfPermission(this.getContext(), permString) == PackageManager.PERMISSION_GRANTED) { - permissionStatus = PermissionState.GRANTED; - } else { - permissionStatus = PermissionState.PROMPT; - - // Check if there is a cached permission state for the "Never ask again" state - SharedPreferences prefs = getContext().getSharedPreferences(PERMISSION_PREFS_NAME, Activity.MODE_PRIVATE); - String state = prefs.getString(permString, null); - - if (state != null) { - permissionStatus = PermissionState.byState(state); + if (annotation != null) { + for (Permission perm : annotation.permissions()) { + // If a permission is defined with no permission constants, return GRANTED for it. + // Otherwise, get its true state. + if (perm.strings().length == 0 || (perm.strings().length == 1 && perm.strings()[0].isEmpty())) { + String key = perm.alias(); + if (!key.isEmpty()) { + PermissionState existingResult = permissionsResults.get(key); + + // auto set permission state to GRANTED if the alias is empty. + if (existingResult == null) { + permissionsResults.put(key, PermissionState.GRANTED); } } + } else { + for (String permString : perm.strings()) { + String key = perm.alias().isEmpty() ? permString : perm.alias(); + PermissionState permissionStatus; + if (ActivityCompat.checkSelfPermission(this.getContext(), permString) == PackageManager.PERMISSION_GRANTED) { + permissionStatus = PermissionState.GRANTED; + } else { + permissionStatus = PermissionState.PROMPT; + + // Check if there is a cached permission state for the "Never ask again" state + SharedPreferences prefs = getContext().getSharedPreferences(PERMISSION_PREFS_NAME, Activity.MODE_PRIVATE); + String state = prefs.getString(permString, null); + + if (state != null) { + permissionStatus = PermissionState.byState(state); + } + } - PermissionState existingResult = permissionsResults.get(key); + PermissionState existingResult = permissionsResults.get(key); - // multiple permissions with the same alias must all be true, otherwise all false. - if (existingResult == null || existingResult == PermissionState.GRANTED) { - permissionsResults.put(key, permissionStatus); + // multiple permissions with the same alias must all be true, otherwise all false. + if (existingResult == null || existingResult == PermissionState.GRANTED) { + permissionsResults.put(key, permissionStatus); + } } } }