react-native-webrtc / react-native-incall-manager

Handling media-routes/sensors/events during a audio/video chat on React Native
ISC License
547 stars 191 forks source link

InCallManager.start({ media: 'audio', auto: true }) causing crash on Android #239

Closed kochihackathon closed 6 months ago

kochihackathon commented 6 months ago

Platform :- Android

Versions:- "react-native-incall-manager": "^4.1.0" (issue is also in 4.2.0) "react-native": "^0.73.4",

javac 18.0.2.1 Gradle version :- 8.3 buildToolsVersion = "34.0.0" minSdkVersion = 24 compileSdkVersion = 34 targetSdkVersion = 34 ndkVersion = "25.2.9519653" kotlinVersion = "1.8.0"

Crash report:-

java.lang.SecurityException: Need BLUETOOTH permission at android.bluetooth.BluetoothHeadset.(BluetoothHeadset.java:431) at android.bluetooth.BluetoothAdapter.getProfileProxy(BluetoothAdapter.java:3821) at com.zxcpoiu.incallmanager.AppRTC.AppRTCBluetoothManager.getBluetoothProfileProxy(AppRTCBluetoothManager.java:471) at com.zxcpoiu.incallmanager.AppRTC.AppRTCBluetoothManager.start(AppRTCBluetoothManager.java:291) at com.zxcpoiu.incallmanager.InCallManagerModule.lambda$start$1(InCallManagerModule.java:577) at com.zxcpoiu.incallmanager.InCallManagerModule.$r8$lambda$Ari-AJTZzDZrRH5SokqnmsDPt0c(Unknown Source:0) at com.zxcpoiu.incallmanager.InCallManagerModule$$ExternalSyntheticLambda2.run(Unknown Source:2) at android.os.Handler.handleCallback(Handler.java:942) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:211) at android.os.Looper.loop(Looper.java:300) at android.app.ActivityThread.main(ActivityThread.java:8395) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:559) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:954)

crash report says it requires bluetooth permission. But it's already there on androidManifest.xml

<uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" />

<uses-permission android:name="android.permission.BLUETOOTH_SCAN"
android:usesPermissionFlags="neverForLocation"/>
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />

also in app.tsx

  PermissionsAndroid.request(
    PermissionsAndroid.PERMISSIONS.BLUETOOTH_CONNECT, {
  })
    .then(async () => {
            InCallManager.start({ media: 'audio', auto: true });
    }) 

FYI:- recently upgraded RN version and all the packages. it was working on old version. Happens everytime

If anyone needs more info about the issue feel free to ask. Any help or insights are appreciated. Have a nice day :)