Fixed telecom manager setting disabled upon restart
This commit is contained in:
parent
336e8510b9
commit
c1dafcb9b9
6 changed files with 11 additions and 14 deletions
|
@ -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" />
|
||||
|
|
|
@ -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")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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())
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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> =
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue