diff --git a/app/src/main/java/org/linphone/contacts/ContactLoader.kt b/app/src/main/java/org/linphone/contacts/ContactLoader.kt index 21239d5cc..4071dda3a 100644 --- a/app/src/main/java/org/linphone/contacts/ContactLoader.kt +++ b/app/src/main/java/org/linphone/contacts/ContactLoader.kt @@ -225,7 +225,7 @@ class ContactLoader : LoaderManager.LoaderCallbacks { ) ) if (sipAddress != null) { - val address = core.interpretUrl(sipAddress, true) + val address = core.interpretUrl(sipAddress, false) if (address != null && friendsAddresses.find { it.weakEqual(address) diff --git a/app/src/main/java/org/linphone/contacts/ContactsManager.kt b/app/src/main/java/org/linphone/contacts/ContactsManager.kt index 724f0d819..60a532450 100644 --- a/app/src/main/java/org/linphone/contacts/ContactsManager.kt +++ b/app/src/main/java/org/linphone/contacts/ContactsManager.kt @@ -735,8 +735,12 @@ fun Friend.getListOfSipAddressesAndPhoneNumbers(listener: ContactNumberOrAddress } // phone numbers are disabled is secure mode unless linked to a SIP address - val enablePhoneNumbers = hasPresenceInfo || core.defaultAccount?.isInSecureMode() == false - val address = presenceAddress ?: core.interpretUrl(number.phoneNumber, true) + val defaultAccount = LinphoneUtils.getDefaultAccount() + val enablePhoneNumbers = hasPresenceInfo || defaultAccount?.isInSecureMode() == false + val address = presenceAddress ?: core.interpretUrl( + number.phoneNumber, + LinphoneUtils.applyInternationalPrefix(defaultAccount) + ) val label = PhoneNumberUtils.vcardParamStringToAddressBookLabel( coreContext.context.resources, number.label ?: "" diff --git a/app/src/main/java/org/linphone/ui/call/fragment/AbstractNewTransferCallFragment.kt b/app/src/main/java/org/linphone/ui/call/fragment/AbstractNewTransferCallFragment.kt index 065bb6ecc..8e1e8a936 100644 --- a/app/src/main/java/org/linphone/ui/call/fragment/AbstractNewTransferCallFragment.kt +++ b/app/src/main/java/org/linphone/ui/call/fragment/AbstractNewTransferCallFragment.kt @@ -45,6 +45,7 @@ import org.linphone.ui.main.history.model.ContactOrSuggestionModel import org.linphone.ui.main.history.viewmodel.StartCallViewModel import org.linphone.ui.main.model.isInSecureMode import org.linphone.utils.DialogUtils +import org.linphone.utils.LinphoneUtils import org.linphone.utils.RecyclerViewHeaderDecoration import org.linphone.utils.hideKeyboard import org.linphone.utils.setKeyboardInsetListener @@ -233,7 +234,7 @@ abstract class AbstractNewTransferCallFragment : GenericCallFragment() { action(address) } else if (addressesCount == 0 && numbersCount == 1 && enablePhoneNumbers) { val number = friend.phoneNumbers.first() - val address = core.interpretUrl(number, true) + val address = core.interpretUrl(number, LinphoneUtils.applyInternationalPrefix()) if (address != null) { Log.i( "$TAG Only 1 phone number found for contact [${friend.name}], starting call directly" diff --git a/app/src/main/java/org/linphone/ui/main/MainActivity.kt b/app/src/main/java/org/linphone/ui/main/MainActivity.kt index 5588ccb61..9fa787437 100644 --- a/app/src/main/java/org/linphone/ui/main/MainActivity.kt +++ b/app/src/main/java/org/linphone/ui/main/MainActivity.kt @@ -594,10 +594,9 @@ class MainActivity : GenericActivity() { }.replace("%40", "@") // Unescape @ character if needed coreContext.postOnCoreThread { - val applyPrefix = LinphoneUtils.getDefaultAccount()?.params?.useInternationalPrefixForCallsAndChats ?: false val address = coreContext.core.interpretUrl( sipUriToCall, - applyPrefix + LinphoneUtils.applyInternationalPrefix() ) Log.i("$TAG Interpreted SIP URI is [${address?.asStringUriOnly()}]") if (address != null) { diff --git a/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactNewOrEditViewModel.kt b/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactNewOrEditViewModel.kt index 7a305864e..7be1056a8 100644 --- a/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactNewOrEditViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactNewOrEditViewModel.kt @@ -199,7 +199,7 @@ class ContactNewOrEditViewModel @UiThread constructor() : ViewModel() { for (address in sipAddresses) { val data = address.value.value.orEmpty().trim() if (data.isNotEmpty()) { - val parsedAddress = core.interpretUrl(data, true) + val parsedAddress = core.interpretUrl(data, false) if (parsedAddress != null) { friend.addAddress(parsedAddress) } diff --git a/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactViewModel.kt b/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactViewModel.kt index 4010de674..f151ca804 100644 --- a/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/contacts/viewmodel/ContactViewModel.kt @@ -408,7 +408,7 @@ class ContactViewModel @UiThread constructor() : ViewModel() { coreContext.startCall(address) } else if (addressesCount == 0 && numbersCount == 1 && enablePhoneNumbers) { val number = friend.phoneNumbers.first() - val address = core.interpretUrl(number, true) + val address = core.interpretUrl(number, LinphoneUtils.applyInternationalPrefix()) if (address != null) { Log.i( "$TAG Only 1 phone number found for contact [${friend.name}], starting audio call directly" @@ -447,7 +447,7 @@ class ContactViewModel @UiThread constructor() : ViewModel() { coreContext.startCall(address, params) } else if (addressesCount == 0 && numbersCount == 1 && enablePhoneNumbers) { val number = friend.phoneNumbers.first() - val address = core.interpretUrl(number, true) + val address = core.interpretUrl(number, LinphoneUtils.applyInternationalPrefix()) if (address != null) { Log.i( "$TAG Only 1 phone number found for contact [${friend.name}], starting video call directly" @@ -485,7 +485,7 @@ class ContactViewModel @UiThread constructor() : ViewModel() { goToConversation(friend.addresses.first()) } else if (addressesCount == 0 && numbersCount == 1 && enablePhoneNumbers) { val number = friend.phoneNumbers.first() - val address = core.interpretUrl(number, true) + val address = core.interpretUrl(number, LinphoneUtils.applyInternationalPrefix()) if (address != null) { Log.i( "$TAG Only 1 phone number found for contact [${friend.name}], sending message directly" diff --git a/app/src/main/java/org/linphone/ui/main/fragment/GenericAddressPickerFragment.kt b/app/src/main/java/org/linphone/ui/main/fragment/GenericAddressPickerFragment.kt index 4b0fd4211..fd6d40662 100644 --- a/app/src/main/java/org/linphone/ui/main/fragment/GenericAddressPickerFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/fragment/GenericAddressPickerFragment.kt @@ -40,6 +40,7 @@ import org.linphone.ui.main.model.SelectedAddressModel import org.linphone.ui.main.model.isInSecureMode import org.linphone.ui.main.viewmodel.AddressSelectionViewModel import org.linphone.utils.DialogUtils +import org.linphone.utils.LinphoneUtils import org.linphone.utils.RecyclerViewHeaderDecoration @UiThread @@ -169,7 +170,7 @@ abstract class GenericAddressPickerFragment : GenericFragment() { onAddressSelected(address, friend) } else if (addressesCount == 0 && numbersCount == 1 && enablePhoneNumbers) { val number = friend.phoneNumbers.first() - val address = core.interpretUrl(number, true) + val address = core.interpretUrl(number, LinphoneUtils.applyInternationalPrefix()) if (address != null) { Log.i("$TAG Only 1 phone number found for contact [${friend.name}], using it") onAddressSelected(address, friend) diff --git a/app/src/main/java/org/linphone/ui/main/history/viewmodel/StartCallViewModel.kt b/app/src/main/java/org/linphone/ui/main/history/viewmodel/StartCallViewModel.kt index e672ec53f..f24073b25 100644 --- a/app/src/main/java/org/linphone/ui/main/history/viewmodel/StartCallViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/history/viewmodel/StartCallViewModel.kt @@ -116,7 +116,10 @@ class StartCallViewModel @UiThread constructor() : AddressSelectionViewModel() { if (suggestion.isNotEmpty()) { Log.i("$TAG Using numpad dial button to call [$suggestion]") coreContext.postOnCoreThread { core -> - val address = core.interpretUrl(suggestion, true) + val address = core.interpretUrl( + suggestion, + LinphoneUtils.applyInternationalPrefix() + ) if (address != null) { Log.i("$TAG Calling [${address.asStringUriOnly()}]") coreContext.startCall(address) diff --git a/app/src/main/java/org/linphone/utils/LinphoneUtils.kt b/app/src/main/java/org/linphone/utils/LinphoneUtils.kt index 2c2289719..768326418 100644 --- a/app/src/main/java/org/linphone/utils/LinphoneUtils.kt +++ b/app/src/main/java/org/linphone/utils/LinphoneUtils.kt @@ -58,6 +58,12 @@ class LinphoneUtils { return coreContext.core.defaultAccount ?: coreContext.core.accountList.firstOrNull() } + @WorkerThread + fun applyInternationalPrefix(account: Account? = null): Boolean { + return account?.params?.useInternationalPrefixForCallsAndChats + ?: (getDefaultAccount()?.params?.useInternationalPrefixForCallsAndChats ?: false) + } + @WorkerThread fun getAddressAsCleanStringUriOnly(address: Address): String { val scheme = address.scheme ?: "sip"