priteshrnandgaonkar / react-native-call-detection

react-native package to detect call states
MIT License
191 stars 110 forks source link

Not Work in Android 12 #105

Open EHRdev opened 2 years ago

EHRdev commented 2 years ago

Hello, I have been using the library for a long time and it is a great tool.

But yesterday my phone was upgraded to Android 12 and it seems it needs additional permission:

MicrosoftTeams-image

gusapc commented 2 years ago

Hello, I have the same problem, did you find a solution?

EHRdev commented 2 years ago

I'm sorry, I found the solution but it's in native language (Java), since I'm not good at that language I haven't been able to adapt it in React Native, I was hoping that the creator of the library would help us.

SOLUTION IN JAVA: https://stackoverflow.com/questions/71285519/telephonymanager-listen-not-working-after-targetsdkversion-is-set-to-31-or-andro

computerjazz commented 2 years ago

@EHRdev thanks for the SO link, here's a patch that incorporates it: https://gist.github.com/computerjazz/a2214c50b36cbb81f4a64e3405e9b60d

EHRdev commented 2 years ago

@EHRdev thanks for the SO link, here's a patch that incorporates it: https://gist.github.com/computerjazz/a2214c50b36cbb81f4a64e3405e9b60d

woooow bro, thank you very much, this is really great, thanks for sharing, I would never have been able to do it myself.

I had the opportunity to try it and it no longer gives an error <3, however it does not detect the events (Offhook, Disconnected, etc.), I use the code as it is in the documentation:

startListenerTapped = () => {
    this.callDetector = new CallDetectorManager((event, phoneNumber)=> {
      if (event === 'Offhook') {
        console.log('Offhook')
      }
      ...
}
computerjazz commented 2 years ago

as of android SDK 31 you now also need to request READ_PHONE_STATE permission or else this will silently fail/noop. See the end of the linked SO post: https://stackoverflow.com/a/71789261

you may need to install react-native-permissions or a similar package.

EHRdev commented 2 years ago

as of android SDK 31 you now also need to request READ_PHONE_STATE permission or else this will silently fail/noop. See the end of the linked SO post: https://stackoverflow.com/a/71789261

you may need to install react-native-permissions or a similar package.

I really appreciate the help friend, hopefully the creator of the library can apply the patch soon

dprevost-LMI commented 2 years ago

I have just encountered this problem today, I used the patch suggested and it worked. However, I wonder why this patch was never applied and a version 1.10.0 was not delivered and that also this issue is closed?

EHRdev commented 2 years ago

I have just encountered this problem today, I used the patch suggested and it worked. However, I wonder why this patch was never applied and a version 1.10.0 was not delivered and that also this issue is closed?

Apparently the library's creator abandoned the project, android 12 has existed since last year with this problem and a few days ago the master computerjazz was the one who created the patch, I closed the issue myself because it solved the problem, but you're right, there should be a patch 1.10 that I doubt will arrive soon

Invictus-Munish commented 2 years ago

Bro I am getting error in ContextCompat

`D:\munish\Desktop\Invictus\jra\node_modules\react-native-call-detection\android\src\main\java\com\pritesh\calldetection\CallDetectionManagerModule.java:60: error: cannot find symbol telephonyManager.registerTelephonyCallback(ContextCompat.getMainExecutor(reactContext), callStateListener); ^ symbol: method getMainExecutor(ReactApplicationContext) location: class ContextCompat Note: Some input files use or override a deprecated API. Note: Recompile with -Xlint:deprecation for details. 1 error

FAILURE: Build failed with an exception.`

Vantam1601 commented 2 years ago

telephonyManager.registerTelephonyCallback(reactContext.getMainExecutor(), callStateListener);

marcesengel commented 2 years ago

@priteshrnandgaonkar would you mind pushing the update to npm if I prepare it or give me push access to the npm repo? https://www.npmjs.com/~marces

imamrobani commented 1 year ago

@EHRdev what device are you using? because I also got an error in Crashlytic about that, but when I tried to reproduce it in the emulator it didn't happen

saurabh-sentieo commented 1 year ago

Again not working for Android 13 (API=33). READ_PHONE_STATE permission is always never_ask_again for this version.