Fixed telecom manager setting disabled upon restart

This commit is contained in:
Sylvain Berfini 2021-10-11 09:15:23 +02:00
parent 336e8510b9
commit c1dafcb9b9
6 changed files with 11 additions and 14 deletions

View file

@ -5,7 +5,7 @@
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<!-- Helps filling phone number and country code in assistant & for Telecom Manager -->
<!-- Helps filling phone number and country code in assistant -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- Needed for auto start at boot and to ensure the service won't be killed by OS while in call -->
@ -27,6 +27,7 @@
<!-- Needed for Telecom Manager -->
<uses-permission android:name="android.permission.MANAGE_OWN_CALLS"/>
<uses-permission android:name="android.permission.READ_PHONE_NUMBERS" />
<!-- Needed for overlay -->
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

View file

@ -41,10 +41,10 @@ abstract class AbstractPhoneFragment<T : ViewDataBinding> : GenericFragment<T>()
) {
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")
}
}
}

View file

@ -96,11 +96,12 @@ class CallSettingsFragment : GenericSettingFragment<SettingsCallFragmentBinding>
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<SettingsCallFragmentBinding>
}
}
corePreferences.useTelecomManager = true
TelecomHelper.create(requireContext())
}
}

View file

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

View file

@ -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<PhoneAccountHandle> =

View file

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