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)
}
}