@@ -139,17 +139,17 @@ public String getName() {
139139 return null ;
140140 }
141141
142- private boolean permissionExists (final String permission ) {
142+ private boolean isPermissionUnavailable (final String permission ) {
143143 String fieldName = getFieldName (permission );
144144
145145 if (fieldName == null )
146- return false ;
146+ return true ;
147147
148148 try {
149149 Manifest .permission .class .getField (fieldName );
150- return true ;
151- } catch (NoSuchFieldException ignored ) {
152150 return false ;
151+ } catch (NoSuchFieldException ignored ) {
152+ return true ;
153153 }
154154 }
155155
@@ -187,7 +187,7 @@ public void openSettings(final Promise promise) {
187187
188188 @ ReactMethod
189189 public void checkPermission (final String permission , final Promise promise ) {
190- if (permission == null || ! permissionExists (permission )) {
190+ if (permission == null || isPermissionUnavailable (permission )) {
191191 promise .resolve (UNAVAILABLE );
192192 return ;
193193 }
@@ -226,7 +226,7 @@ public void shouldShowRequestPermissionRationale(final String permission, final
226226
227227 @ ReactMethod
228228 public void requestPermission (final String permission , final Promise promise ) {
229- if (permission == null || ! permissionExists (permission )) {
229+ if (permission == null || isPermissionUnavailable (permission )) {
230230 promise .resolve (UNAVAILABLE );
231231 return ;
232232 }
@@ -285,7 +285,7 @@ public void checkMultiplePermissions(final ReadableArray permissions, final Prom
285285 for (int i = 0 ; i < permissions .size (); i ++) {
286286 String permission = permissions .getString (i );
287287
288- if (! permissionExists (permission )) {
288+ if (isPermissionUnavailable (permission )) {
289289 output .putString (permission , UNAVAILABLE );
290290 } else if (Build .VERSION .SDK_INT < Build .VERSION_CODES .M ) {
291291 output .putString (
@@ -314,7 +314,7 @@ public void requestMultiplePermissions(final ReadableArray permissions, final Pr
314314 for (int i = 0 ; i < permissions .size (); i ++) {
315315 String permission = permissions .getString (i );
316316
317- if (! permissionExists (permission )) {
317+ if (isPermissionUnavailable (permission )) {
318318 output .putString (permission , UNAVAILABLE );
319319 checkedPermissionsCount ++;
320320 } else if (Build .VERSION .SDK_INT < Build .VERSION_CODES .M ) {
@@ -422,6 +422,12 @@ public boolean onRequestPermissionsResult(int requestCode, String[] permissions,
422422 e ,
423423 "Unexpected invocation of `onRequestPermissionsResult` with invalid current activity" );
424424 return false ;
425+ } catch (NullPointerException e ) {
426+ FLog .e (
427+ "PermissionsModule" ,
428+ e ,
429+ "Unexpected invocation of `onRequestPermissionsResult` with invalid request code" );
430+ return false ;
425431 }
426432 }
427433
0 commit comments