@@ -139,17 +139,17 @@ public String getName() {
139
139
return null ;
140
140
}
141
141
142
- private boolean permissionExists (final String permission ) {
142
+ private boolean isPermissionUnavailable (final String permission ) {
143
143
String fieldName = getFieldName (permission );
144
144
145
145
if (fieldName == null )
146
- return false ;
146
+ return true ;
147
147
148
148
try {
149
149
Manifest .permission .class .getField (fieldName );
150
- return true ;
151
- } catch (NoSuchFieldException ignored ) {
152
150
return false ;
151
+ } catch (NoSuchFieldException ignored ) {
152
+ return true ;
153
153
}
154
154
}
155
155
@@ -187,7 +187,7 @@ public void openSettings(final Promise promise) {
187
187
188
188
@ ReactMethod
189
189
public void checkPermission (final String permission , final Promise promise ) {
190
- if (permission == null || ! permissionExists (permission )) {
190
+ if (permission == null || isPermissionUnavailable (permission )) {
191
191
promise .resolve (UNAVAILABLE );
192
192
return ;
193
193
}
@@ -226,7 +226,7 @@ public void shouldShowRequestPermissionRationale(final String permission, final
226
226
227
227
@ ReactMethod
228
228
public void requestPermission (final String permission , final Promise promise ) {
229
- if (permission == null || ! permissionExists (permission )) {
229
+ if (permission == null || isPermissionUnavailable (permission )) {
230
230
promise .resolve (UNAVAILABLE );
231
231
return ;
232
232
}
@@ -285,7 +285,7 @@ public void checkMultiplePermissions(final ReadableArray permissions, final Prom
285
285
for (int i = 0 ; i < permissions .size (); i ++) {
286
286
String permission = permissions .getString (i );
287
287
288
- if (! permissionExists (permission )) {
288
+ if (isPermissionUnavailable (permission )) {
289
289
output .putString (permission , UNAVAILABLE );
290
290
} else if (Build .VERSION .SDK_INT < Build .VERSION_CODES .M ) {
291
291
output .putString (
@@ -314,7 +314,7 @@ public void requestMultiplePermissions(final ReadableArray permissions, final Pr
314
314
for (int i = 0 ; i < permissions .size (); i ++) {
315
315
String permission = permissions .getString (i );
316
316
317
- if (! permissionExists (permission )) {
317
+ if (isPermissionUnavailable (permission )) {
318
318
output .putString (permission , UNAVAILABLE );
319
319
checkedPermissionsCount ++;
320
320
} else if (Build .VERSION .SDK_INT < Build .VERSION_CODES .M ) {
@@ -422,6 +422,12 @@ public boolean onRequestPermissionsResult(int requestCode, String[] permissions,
422
422
e ,
423
423
"Unexpected invocation of `onRequestPermissionsResult` with invalid current activity" );
424
424
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 ;
425
431
}
426
432
}
427
433
0 commit comments