diff --git a/android/sdk/src/main/java/org/jitsi/meet/sdk/AndroidSettingsModule.java b/android/sdk/src/main/java/org/jitsi/meet/sdk/AndroidSettingsModule.java index a60977c4a9..08ceb8f16f 100644 --- a/android/sdk/src/main/java/org/jitsi/meet/sdk/AndroidSettingsModule.java +++ b/android/sdk/src/main/java/org/jitsi/meet/sdk/AndroidSettingsModule.java @@ -5,11 +5,13 @@ package org.jitsi.meet.sdk; +import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.provider.Settings; +import com.facebook.react.bridge.Promise; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReactContextBaseJavaModule; import com.facebook.react.bridge.ReactMethod; @@ -25,7 +27,7 @@ class AndroidSettingsModule extends ReactContextBaseJavaModule { } @ReactMethod - public void open() { + public void open(Promise promise) { Context context = getReactApplicationContext(); Intent intent = new Intent(); @@ -34,6 +36,15 @@ class AndroidSettingsModule extends ReactContextBaseJavaModule { intent.setData( Uri.fromParts("package", context.getPackageName(), null)); - context.startActivity(intent); + try { + context.startActivity(intent); + } catch (ActivityNotFoundException e) { + // Some devices may give an error here. + // https://developer.android.com/reference/android/provider/Settings.html#ACTION_APPLICATION_DETAILS_SETTINGS + promise.reject(e); + return; + } + + promise.resolve(null); } } diff --git a/react/features/mobile/permissions/middleware.js b/react/features/mobile/permissions/middleware.js index 09e260a719..04e32ee459 100644 --- a/react/features/mobile/permissions/middleware.js +++ b/react/features/mobile/permissions/middleware.js @@ -80,7 +80,15 @@ function _alertPermissionErrorWithSettings(trackType) { function _openSettings() { switch (Platform.OS) { case 'android': - NativeModules.AndroidSettings.open(); + NativeModules.AndroidSettings.open().catch(() => { + Alert.alert( + 'Error opening settings', + 'Please open settings and grant the required permissions', + [ + { text: 'OK' } + ] + ); + }); break; case 'ios':