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.READ_CONTACTS" />
|
||||||
<uses-permission android:name="android.permission.WRITE_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" />
|
<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 -->
|
<!-- 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 -->
|
<!-- Needed for Telecom Manager -->
|
||||||
<uses-permission android:name="android.permission.MANAGE_OWN_CALLS"/>
|
<uses-permission android:name="android.permission.MANAGE_OWN_CALLS"/>
|
||||||
|
<uses-permission android:name="android.permission.READ_PHONE_NUMBERS" />
|
||||||
|
|
||||||
<!-- Needed for overlay -->
|
<!-- Needed for overlay -->
|
||||||
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
|
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
|
||||||
|
|
|
@ -41,10 +41,10 @@ abstract class AbstractPhoneFragment<T : ViewDataBinding> : GenericFragment<T>()
|
||||||
) {
|
) {
|
||||||
if (requestCode == 0) {
|
if (requestCode == 0) {
|
||||||
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
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()
|
updateFromDeviceInfo()
|
||||||
} else {
|
} 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 {
|
it.consume {
|
||||||
if (!PermissionHelper.get().hasTelecomManagerPermissions()) {
|
if (!PermissionHelper.get().hasTelecomManagerPermissions()) {
|
||||||
val permissions = arrayOf(
|
val permissions = arrayOf(
|
||||||
Manifest.permission.READ_PHONE_STATE,
|
Manifest.permission.READ_PHONE_NUMBERS,
|
||||||
Manifest.permission.MANAGE_OWN_CALLS
|
Manifest.permission.MANAGE_OWN_CALLS
|
||||||
)
|
)
|
||||||
requestPermissions(permissions, 1)
|
requestPermissions(permissions, 1)
|
||||||
} else if (!TelecomHelper.exists()) {
|
} else if (!TelecomHelper.exists()) {
|
||||||
|
corePreferences.useTelecomManager = true
|
||||||
Log.w("[Telecom Helper] Doesn't exists yet, creating it")
|
Log.w("[Telecom Helper] Doesn't exists yet, creating it")
|
||||||
TelecomHelper.create(requireContext())
|
TelecomHelper.create(requireContext())
|
||||||
}
|
}
|
||||||
|
@ -181,6 +182,7 @@ class CallSettingsFragment : GenericSettingFragment<SettingsCallFragmentBinding>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
corePreferences.useTelecomManager = true
|
||||||
TelecomHelper.create(requireContext())
|
TelecomHelper.create(requireContext())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,6 @@ import org.linphone.core.MediaEncryption
|
||||||
import org.linphone.mediastream.Version
|
import org.linphone.mediastream.Version
|
||||||
import org.linphone.telecom.TelecomHelper
|
import org.linphone.telecom.TelecomHelper
|
||||||
import org.linphone.utils.Event
|
import org.linphone.utils.Event
|
||||||
import org.linphone.utils.PermissionHelper
|
|
||||||
|
|
||||||
class CallSettingsViewModel : GenericSettingsViewModel() {
|
class CallSettingsViewModel : GenericSettingsViewModel() {
|
||||||
val deviceRingtoneListener = object : SettingListenerStub() {
|
val deviceRingtoneListener = object : SettingListenerStub() {
|
||||||
|
@ -65,16 +64,10 @@ class CallSettingsViewModel : GenericSettingsViewModel() {
|
||||||
|
|
||||||
val useTelecomManagerListener = object : SettingListenerStub() {
|
val useTelecomManagerListener = object : SettingListenerStub() {
|
||||||
override fun onBoolValueChanged(newValue: Boolean) {
|
override fun onBoolValueChanged(newValue: Boolean) {
|
||||||
if (newValue &&
|
if (newValue) {
|
||||||
(
|
|
||||||
!PermissionHelper.get().hasTelecomManagerPermissions() ||
|
|
||||||
!TelecomHelper.exists() ||
|
|
||||||
!TelecomHelper.get().isAccountEnabled()
|
|
||||||
)
|
|
||||||
) {
|
|
||||||
enableTelecomManagerEvent.value = Event(true)
|
enableTelecomManagerEvent.value = Event(true)
|
||||||
} else {
|
} else {
|
||||||
if (!newValue && TelecomHelper.exists()) TelecomHelper.get().removeAccount()
|
if (TelecomHelper.exists()) TelecomHelper.get().removeAccount()
|
||||||
prefs.useTelecomManager = newValue
|
prefs.useTelecomManager = newValue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -80,6 +80,7 @@ class TelecomHelper private constructor(context: Context) {
|
||||||
|
|
||||||
@SuppressLint("MissingPermission")
|
@SuppressLint("MissingPermission")
|
||||||
fun findExistingAccount(context: Context): PhoneAccount? {
|
fun findExistingAccount(context: Context): PhoneAccount? {
|
||||||
|
if (!PermissionHelper.exists()) PermissionHelper.create(context)
|
||||||
if (PermissionHelper.get().hasReadPhoneState()) {
|
if (PermissionHelper.get().hasReadPhoneState()) {
|
||||||
var account: PhoneAccount? = null
|
var account: PhoneAccount? = null
|
||||||
val phoneAccountHandleList: List<PhoneAccountHandle> =
|
val phoneAccountHandleList: List<PhoneAccountHandle> =
|
||||||
|
|
|
@ -71,7 +71,7 @@ class PermissionHelper private constructor(private val context: Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
fun hasTelecomManagerPermissions(): Boolean {
|
fun hasTelecomManagerPermissions(): Boolean {
|
||||||
return hasPermission(Manifest.permission.READ_PHONE_STATE) &&
|
return hasPermission(Manifest.permission.READ_PHONE_NUMBERS) &&
|
||||||
hasPermission(Manifest.permission.MANAGE_OWN_CALLS)
|
hasPermission(Manifest.permission.MANAGE_OWN_CALLS)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue