Now requires Android 10 or newer to use Telecom Manager feature to prevent crash due to Android 9 OS bug
This commit is contained in:
parent
47aa8e3a12
commit
04e8c3566b
7 changed files with 21 additions and 10 deletions
|
@ -103,7 +103,7 @@ class CallSettingsViewModel : GenericSettingsViewModel() {
|
|||
val enableTelecomManagerEvent: MutableLiveData<Event<Boolean>> by lazy {
|
||||
MutableLiveData<Event<Boolean>>()
|
||||
}
|
||||
val api26OrHigher = MutableLiveData<Boolean>()
|
||||
val api29OrHigher = MutableLiveData<Boolean>()
|
||||
|
||||
val overlayListener = object : SettingListenerStub() {
|
||||
override fun onBoolValueChanged(newValue: Boolean) {
|
||||
|
@ -238,7 +238,7 @@ class CallSettingsViewModel : GenericSettingsViewModel() {
|
|||
encryptionMandatory.value = core.isMediaEncryptionMandatory
|
||||
|
||||
useTelecomManager.value = prefs.useTelecomManager
|
||||
api26OrHigher.value = Version.sdkAboveOrEqual(Version.API26_O_80)
|
||||
api29OrHigher.value = Version.sdkAboveOrEqual(Version.API29_ANDROID_10)
|
||||
|
||||
overlay.value = prefs.showCallOverlay
|
||||
systemWideOverlay.value = prefs.systemWideCallOverlay
|
||||
|
|
|
@ -341,11 +341,6 @@ class Api26Compatibility {
|
|||
)
|
||||
}
|
||||
|
||||
fun hasTelecomManagerPermission(context: Context): Boolean {
|
||||
return Compatibility.hasPermission(context, Manifest.permission.READ_PHONE_STATE) &&
|
||||
Compatibility.hasPermission(context, Manifest.permission.MANAGE_OWN_CALLS)
|
||||
}
|
||||
|
||||
fun getImeFlagsForSecureChatRoom(): Int {
|
||||
return EditorInfo.IME_FLAG_NO_EXTRACT_UI or EditorInfo.IME_FLAG_NO_PERSONALIZED_LEARNING
|
||||
}
|
||||
|
|
|
@ -56,6 +56,11 @@ class Api29Compatibility {
|
|||
return granted
|
||||
}
|
||||
|
||||
fun hasTelecomManagerPermission(context: Context): Boolean {
|
||||
return Compatibility.hasPermission(context, Manifest.permission.READ_PHONE_STATE) &&
|
||||
Compatibility.hasPermission(context, Manifest.permission.MANAGE_OWN_CALLS)
|
||||
}
|
||||
|
||||
fun createMessageChannel(
|
||||
context: Context,
|
||||
notificationManager: NotificationManagerCompat
|
||||
|
|
|
@ -84,8 +84,10 @@ class Compatibility {
|
|||
fun hasTelecomManagerPermissions(context: Context): Boolean {
|
||||
return if (Version.sdkAboveOrEqual(Version.API30_ANDROID_11)) {
|
||||
Api30Compatibility.hasTelecomManagerPermission(context)
|
||||
} else if (Version.sdkAboveOrEqual(Version.API29_ANDROID_10)) {
|
||||
Api29Compatibility.hasTelecomManagerPermission(context)
|
||||
} else {
|
||||
Api26Compatibility.hasTelecomManagerPermission(context)
|
||||
false
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -394,6 +394,15 @@ class CoreContext(
|
|||
core.config.setBool("app", "conference_migration", true)
|
||||
}
|
||||
|
||||
// Disable Telecom Manager on Android < 10 to prevent crash due to OS bug in Android 9
|
||||
if (Version.sdkStrictlyBelow(Version.API29_ANDROID_10)) {
|
||||
if (corePreferences.useTelecomManager) {
|
||||
Log.w("[Context] Android < 10 detected, disabling telecom manager to prevent crash due to OS bug")
|
||||
}
|
||||
corePreferences.useTelecomManager = false
|
||||
corePreferences.manuallyDisabledTelecomManager = true
|
||||
}
|
||||
|
||||
initUserCertificates()
|
||||
|
||||
computeUserAgent()
|
||||
|
|
|
@ -41,7 +41,7 @@ import org.linphone.utils.LinphoneUtils
|
|||
import org.linphone.utils.PermissionHelper
|
||||
import org.linphone.utils.SingletonHolder
|
||||
|
||||
@TargetApi(26)
|
||||
@TargetApi(29)
|
||||
class TelecomHelper private constructor(context: Context) {
|
||||
companion object : SingletonHolder<TelecomHelper, Context>(::TelecomHelper)
|
||||
|
||||
|
|
|
@ -104,7 +104,7 @@
|
|||
layout="@layout/settings_widget_switch"
|
||||
linphone:title="@{@string/call_settings_use_telecom_manager_title}"
|
||||
linphone:subtitle="@{@string/call_settings_use_telecom_manager_summary}"
|
||||
android:visibility="@{viewModel.api26OrHigher ? View.VISIBLE : View.GONE}"
|
||||
android:visibility="@{viewModel.api29OrHigher ? View.VISIBLE : View.GONE}"
|
||||
linphone:listener="@{viewModel.useTelecomManagerListener}"
|
||||
linphone:checked="@={viewModel.useTelecomManager}"/>
|
||||
|
||||
|
|
Loading…
Reference in a new issue