WebsiteBeaver / CordovaCall

Cordova CallKit & ConnectionService plugin for iOS/Android that displays the native call UI for VOIP apps
MIT License
196 stars 91 forks source link

Android / Choose SIM for this call #57

Open HugoHeneault opened 6 years ago

HugoHeneault commented 6 years ago

Hi there,

We're having issues when we try to call contacts from outside the app with android 8/9 on with a samsung s7 edge (android 8) and essential phone ph1 (android 9).

sans-titre-1

Our app won't be able to handle "normal" calls so how could we disable this modal to open?

Thanks again guys!

jeffmitaly commented 5 years ago

Just in case anyone else runs into this issue... It may have something to with Cordova Call adding the BIND_TELECOM_CONNECTION_SERVICE (https://developer.android.com/reference/android/Manifest.permission#BIND_TELECOM_CONNECTION_SERVICE) permission to the android manifest XML. It seemed that if this was turned is when this prompt would show up.

I can't confirm this 100% but maybe that will send someone in the right direction. Modifying the Android permissions wound up working for me. I also noticed it seemed that not all the Android models/devices were effected the same way (for example, Galaxy S7 did not seem to care about this at all). Again, not 100% about any of this but hopefully it can point someone in the right direction as I was not able to find a lot of other information online about this issue.

dgarciamaubic commented 5 years ago

Just in case anyone else runs into this issue... It may have something to with Cordova Call adding the BIND_TELECOM_CONNECTION_SERVICE (https://developer.android.com/reference/android/Manifest.permission#BIND_TELECOM_CONNECTION_SERVICE) permission to the android manifest XML. It seemed that if this was turned is when this prompt would show up.

I can't confirm this 100% but maybe that will send someone in the right direction. Modifying the Android permissions wound up working for me. I also noticed it seemed that not all the Android models/devices were effected the same way (for example, Galaxy S7 did not seem to care about this at all). Again, not 100% about any of this but hopefully it can point someone in the right direction as I was not able to find a lot of other information online about this issue.

Hi @omniowner, how exactly did you modify Android permissions for the workaround?

I have same situation, using a Motorola Moto G5 Plus with Android 8.1.0

jeffmitaly commented 5 years ago

I believe all I had to do was add the BIND_TELECOM_CONNECTION_SERVICE permission to the Android Manifest XML file... but I'm not 100% sure exactly now because we have actually dropped phone call functionality in our app now.

I believe the Android Manifest File I had to modify was located @ "{rootOfCordovaProject}\platforms\android\CordovaLib\AndroidManifest.xml" ... but it may be different in your project.

dgarciamaubic commented 5 years ago

I believe all I had to do was add the BIND_TELECOM_CONNECTION_SERVICE permission to the Android Manifest XML file... but I'm not 100% sure exactly now because we have actually dropped phone call functionality in our app now.

I believe the Android Manifest File I had to modify was located @ "{rootOfCordovaProject}\platforms\android\CordovaLib\AndroidManifest.xml" ... but it may be different in your project.

I already had that permission added to my Android Manifest XML, still happening. For what I've seen making some research on the web, this only happens in devices with dual-SIM and it is clearly related to that.

Don't know if a solution/patch for this is needed on the plugin or if it is just default behaviour for dual-SIM based devices.

quintonn commented 5 years ago

Hi, I am getting this same issue. It only started once i added this plugin and ran my app. Now all my users are getting this sim choose screen whenever they make a phone call. Even if they make a phone call not using my app. And this is 100% because of my app & this plugin. Many users started reporting this. I have tried making calls in 2 ways,

  1. using this plugin: cordova.plugins.CordovaCall.callNumber(...
  2. using document.location.href = 'tel:' + 012345679;

But because the plugin and user-permissions are there, it shows the user the sim chooser.

And my phone (LG G6) for example doesn't allow 2 sim cards, but i still see this.

Any recommendations?

Haroon6138 commented 4 years ago

Hi, I am having the same issue, I even tried to modify the plugin capabilities in CordovaCall.java file but no use. Please help me as i really need this urgently.. #

roymasad commented 4 years ago

stumbled upon this yesterday on my own project

there is a solution

if your app doesnt need to make calls, edit the plugin CordovaCall.java file

change

.setCapabilities(PhoneAccount.CAPABILITY_CALL_PROVIDER)

to

.setCapabilities(PhoneAccount.CAPABILITY_CALL_SUBJECT)

you have to do this change in 2 places in that file

that should fix it, you can receive calls using it but it wont show up as a default option anymore on some phones for normal calls

i tried other things also like removing permissions manually or turning off the telecom library altogether in code, none worked

this change did work tho for my specific need