diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8c5374fad..7fb8213c6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -5,7 +5,7 @@ - + @@ -27,6 +27,7 @@ + diff --git a/app/src/main/java/org/linphone/activities/assistant/fragments/AbstractPhoneFragment.kt b/app/src/main/java/org/linphone/activities/assistant/fragments/AbstractPhoneFragment.kt index 7620ee81b..4941ac2c9 100644 --- a/app/src/main/java/org/linphone/activities/assistant/fragments/AbstractPhoneFragment.kt +++ b/app/src/main/java/org/linphone/activities/assistant/fragments/AbstractPhoneFragment.kt @@ -41,10 +41,10 @@ abstract class AbstractPhoneFragment : GenericFragment() ) { if (requestCode == 0) { if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) { - Log.i("[Assistant] READ_PHONE_NUMBERS permission granted") + Log.i("[Assistant] READ_PHONE_STATE permission granted") updateFromDeviceInfo() } else { - Log.w("[Assistant] READ_PHONE_NUMBERS permission denied") + Log.w("[Assistant] READ_PHONE_STATE permission denied") } } } diff --git a/app/src/main/java/org/linphone/activities/main/settings/fragments/CallSettingsFragment.kt b/app/src/main/java/org/linphone/activities/main/settings/fragments/CallSettingsFragment.kt index 00d1941e7..048257429 100644 --- a/app/src/main/java/org/linphone/activities/main/settings/fragments/CallSettingsFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/settings/fragments/CallSettingsFragment.kt @@ -96,11 +96,12 @@ class CallSettingsFragment : GenericSettingFragment it.consume { if (!PermissionHelper.get().hasTelecomManagerPermissions()) { val permissions = arrayOf( - Manifest.permission.READ_PHONE_STATE, + Manifest.permission.READ_PHONE_NUMBERS, Manifest.permission.MANAGE_OWN_CALLS ) requestPermissions(permissions, 1) } else if (!TelecomHelper.exists()) { + corePreferences.useTelecomManager = true Log.w("[Telecom Helper] Doesn't exists yet, creating it") TelecomHelper.create(requireContext()) } @@ -181,6 +182,7 @@ class CallSettingsFragment : GenericSettingFragment } } + corePreferences.useTelecomManager = true TelecomHelper.create(requireContext()) } } diff --git a/app/src/main/java/org/linphone/activities/main/settings/viewmodels/CallSettingsViewModel.kt b/app/src/main/java/org/linphone/activities/main/settings/viewmodels/CallSettingsViewModel.kt index 11bda5f63..83aaca1a3 100644 --- a/app/src/main/java/org/linphone/activities/main/settings/viewmodels/CallSettingsViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/settings/viewmodels/CallSettingsViewModel.kt @@ -26,7 +26,6 @@ import org.linphone.core.MediaEncryption import org.linphone.mediastream.Version import org.linphone.telecom.TelecomHelper import org.linphone.utils.Event -import org.linphone.utils.PermissionHelper class CallSettingsViewModel : GenericSettingsViewModel() { val deviceRingtoneListener = object : SettingListenerStub() { @@ -65,16 +64,10 @@ class CallSettingsViewModel : GenericSettingsViewModel() { val useTelecomManagerListener = object : SettingListenerStub() { override fun onBoolValueChanged(newValue: Boolean) { - if (newValue && - ( - !PermissionHelper.get().hasTelecomManagerPermissions() || - !TelecomHelper.exists() || - !TelecomHelper.get().isAccountEnabled() - ) - ) { + if (newValue) { enableTelecomManagerEvent.value = Event(true) } else { - if (!newValue && TelecomHelper.exists()) TelecomHelper.get().removeAccount() + if (TelecomHelper.exists()) TelecomHelper.get().removeAccount() prefs.useTelecomManager = newValue } } diff --git a/app/src/main/java/org/linphone/telecom/TelecomHelper.kt b/app/src/main/java/org/linphone/telecom/TelecomHelper.kt index 6dfe178f5..481d8d220 100644 --- a/app/src/main/java/org/linphone/telecom/TelecomHelper.kt +++ b/app/src/main/java/org/linphone/telecom/TelecomHelper.kt @@ -80,6 +80,7 @@ class TelecomHelper private constructor(context: Context) { @SuppressLint("MissingPermission") fun findExistingAccount(context: Context): PhoneAccount? { + if (!PermissionHelper.exists()) PermissionHelper.create(context) if (PermissionHelper.get().hasReadPhoneState()) { var account: PhoneAccount? = null val phoneAccountHandleList: List = diff --git a/app/src/main/java/org/linphone/utils/PermissionHelper.kt b/app/src/main/java/org/linphone/utils/PermissionHelper.kt index 7c3ecba67..94317f4dd 100644 --- a/app/src/main/java/org/linphone/utils/PermissionHelper.kt +++ b/app/src/main/java/org/linphone/utils/PermissionHelper.kt @@ -71,7 +71,7 @@ class PermissionHelper private constructor(private val context: Context) { } fun hasTelecomManagerPermissions(): Boolean { - return hasPermission(Manifest.permission.READ_PHONE_STATE) && + return hasPermission(Manifest.permission.READ_PHONE_NUMBERS) && hasPermission(Manifest.permission.MANAGE_OWN_CALLS) } }