From 63b695a609c1fb00b7611d98e7b4658e816d8788 Mon Sep 17 00:00:00 2001 From: Mathieu Acthernoene Date: Thu, 26 Oct 2023 10:58:37 +0200 Subject: [PATCH] Add a NullPointerException catch --- .../rnpermissions/RNPermissionsModule.java | 22 ++++++++++++------- example/ios/Podfile.lock | 4 ++-- package.json | 2 +- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/android/src/main/java/com/zoontek/rnpermissions/RNPermissionsModule.java b/android/src/main/java/com/zoontek/rnpermissions/RNPermissionsModule.java index faabb1cf..6602f9e8 100644 --- a/android/src/main/java/com/zoontek/rnpermissions/RNPermissionsModule.java +++ b/android/src/main/java/com/zoontek/rnpermissions/RNPermissionsModule.java @@ -139,17 +139,17 @@ public String getName() { return null; } - private boolean permissionExists(final String permission) { + private boolean isPermissionUnavailable(final String permission) { String fieldName = getFieldName(permission); if (fieldName == null) - return false; + return true; try { Manifest.permission.class.getField(fieldName); - return true; - } catch (NoSuchFieldException ignored) { return false; + } catch (NoSuchFieldException ignored) { + return true; } } @@ -187,7 +187,7 @@ public void openSettings(final Promise promise) { @ReactMethod public void checkPermission(final String permission, final Promise promise) { - if (permission == null || !permissionExists(permission)) { + if (permission == null || isPermissionUnavailable(permission)) { promise.resolve(UNAVAILABLE); return; } @@ -226,7 +226,7 @@ public void shouldShowRequestPermissionRationale(final String permission, final @ReactMethod public void requestPermission(final String permission, final Promise promise) { - if (permission == null || !permissionExists(permission)) { + if (permission == null || isPermissionUnavailable(permission)) { promise.resolve(UNAVAILABLE); return; } @@ -285,7 +285,7 @@ public void checkMultiplePermissions(final ReadableArray permissions, final Prom for (int i = 0; i < permissions.size(); i++) { String permission = permissions.getString(i); - if (!permissionExists(permission)) { + if (isPermissionUnavailable(permission)) { output.putString(permission, UNAVAILABLE); } else if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { output.putString( @@ -314,7 +314,7 @@ public void requestMultiplePermissions(final ReadableArray permissions, final Pr for (int i = 0; i < permissions.size(); i++) { String permission = permissions.getString(i); - if (!permissionExists(permission)) { + if (isPermissionUnavailable(permission)) { output.putString(permission, UNAVAILABLE); checkedPermissionsCount++; } else if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { @@ -422,6 +422,12 @@ public boolean onRequestPermissionsResult(int requestCode, String[] permissions, e, "Unexpected invocation of `onRequestPermissionsResult` with invalid current activity"); return false; + } catch (NullPointerException e) { + FLog.e( + "PermissionsModule", + e, + "Unexpected invocation of `onRequestPermissionsResult` with invalid request code"); + return false; } } diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index e896e67b..a20c115c 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -487,7 +487,7 @@ PODS: - React-jsi (= 0.72.5) - React-logger (= 0.72.5) - React-perflogger (= 0.72.5) - - RNPermissions (3.10.0): + - RNPermissions (3.10.1): - React-Core - RNVectorIcons (10.0.0): - React-Core @@ -720,7 +720,7 @@ SPEC CHECKSUMS: React-runtimescheduler: cc32add98c45c5df18436a6a52a7e1f6edec102c React-utils: 7a9918a1ffdd39aba67835d42386f592ea3f8e76 ReactCommon: 91ece8350ebb3dd2be9cef662abd78b6948233c0 - RNPermissions: 841114b546bd9d07254d76b8ed9c1a365fe95195 + RNPermissions: c355116790124654beb71c2e713f38d04ff21a48 RNVectorIcons: 8b5bb0fa61d54cd2020af4f24a51841ce365c7e9 SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17 Yoga: 86fed2e4d425ee4c6eab3813ba1791101ee153c6 diff --git a/package.json b/package.json index c261bd32..d7177af3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-native-permissions", - "version": "3.10.0", + "version": "3.10.1", "license": "MIT", "description": "An unified permissions API for React Native on iOS, Android and Windows", "author": "Mathieu Acthernoene ",