diff --git a/app/src/main/java/org/linphone/core/CoreContext.kt b/app/src/main/java/org/linphone/core/CoreContext.kt index e1855265a..dbcbcd451 100644 --- a/app/src/main/java/org/linphone/core/CoreContext.kt +++ b/app/src/main/java/org/linphone/core/CoreContext.kt @@ -307,8 +307,14 @@ class CoreContext(val context: Context, coreConfig: Config) { } fun declineCall(call: Call) { - Log.i("[Context] Declining call $call") - call.decline(Reason.Declined) + val voiceMailUri = corePreferences.voiceMailUri + if (voiceMailUri != null && corePreferences.redirectDeclinedCallToVoiceMail) { + Log.i("[Context] Redirecting call $call to voice mail") + call.redirect(voiceMailUri) + } else { + Log.i("[Context] Declining call $call") + call.decline(Reason.Declined) + } } fun terminateCall(call: Call) { diff --git a/app/src/main/java/org/linphone/core/CorePreferences.kt b/app/src/main/java/org/linphone/core/CorePreferences.kt index 0ce8ab23d..ca8628584 100644 --- a/app/src/main/java/org/linphone/core/CorePreferences.kt +++ b/app/src/main/java/org/linphone/core/CorePreferences.kt @@ -199,6 +199,12 @@ class CorePreferences constructor(private val context: Context) { config.setString("app", "voice_mail", value) } + var redirectDeclinedCallToVoiceMail: Boolean + get() = config.getBool("app", "redirect_declined_call_to_voice_mail", true) + set(value) { + config.setBool("app", "redirect_declined_call_to_voice_mail", value) + } + var lastUpdateAvailableCheckTimestamp: Int get() = config.getInt("app", "version_check_url_last_timestamp", 0) set(value) {