From 877ce2e6b2d3b3d95577cf8684d9037f0c733f97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=9Cst=C3=BCn=20Ergenoglu?= Date: Wed, 14 Dec 2016 19:52:25 +0200 Subject: [PATCH] Add video/audio authorization check for Android (#513) * Add video/audio authorization check for Android This only checks for the permission and no request is made. `PermissionAndroid` in recent React Native or manually asking it from native code can still be used. * Add checkDeviceAuthorizationStatus --- .../RCTCamera/RCTCameraModule.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/android/src/main/java/com/lwansbrough/RCTCamera/RCTCameraModule.java b/android/src/main/java/com/lwansbrough/RCTCamera/RCTCameraModule.java index 1dd3edb..82d2e7e 100644 --- a/android/src/main/java/com/lwansbrough/RCTCamera/RCTCameraModule.java +++ b/android/src/main/java/com/lwansbrough/RCTCamera/RCTCameraModule.java @@ -608,6 +608,34 @@ public class RCTCameraModule extends ReactContextBaseJavaModule } } } + + @ReactMethod + public void checkDeviceAuthorizationStatus(final Promise promise) { + if (!checkForPermission(Manifest.permission.CAMERA)) { + promise.resolve(false); + } else { + promise.resolve(checkForPermission(Manifest.permission.RECORD_AUDIO)); + } + } + + @ReactMethod + public void checkVideoAuthorizationStatus(final Promise promise) { + promise.resolve(checkForPermission(Manifest.permission.CAMERA)); + } + + @ReactMethod + public void checkAudioAuthorizationStatus(final Promise promise) { + promise.resolve(checkForPermission(Manifest.permission.RECORD_AUDIO)); + } + + private boolean checkForPermission(String permission) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { + return true; + } + + int p = ContextCompat.checkSelfPermission(getReactApplicationContext(), permission); + return p == PackageManager.PERMISSION_GRANTED; + } @ReactMethod public void capture(final ReadableMap options, final Promise promise) {