From 335129aee41bec15dbc3b50e17458c29745d0042 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 11 May 2020 15:21:05 +0200 Subject: [PATCH] store default SIM cards to use system-wide too --- .../dialer/activities/CallActivity.kt | 8 +++----- .../dialer/activities/DialerActivity.kt | 2 +- .../dialer/dialogs/SelectSIMDialog.kt | 4 ++-- .../dialer/extensions/Activity.kt | 14 +++++++------- 4 files changed, 13 insertions(+), 15 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/CallActivity.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/CallActivity.kt index 2a73575e..7a12b69a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/CallActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/CallActivity.kt @@ -26,7 +26,7 @@ import com.simplemobiletools.dialer.R import com.simplemobiletools.dialer.extensions.addCharacter import com.simplemobiletools.dialer.extensions.audioManager import com.simplemobiletools.dialer.extensions.config -import com.simplemobiletools.dialer.extensions.startCallIntent +import com.simplemobiletools.dialer.extensions.getHandleToUse import com.simplemobiletools.dialer.helpers.ACCEPT_CALL import com.simplemobiletools.dialer.helpers.CallManager import com.simplemobiletools.dialer.helpers.DECLINE_CALL @@ -239,10 +239,8 @@ class CallActivity : SimpleActivity() { } private fun showPhoneAccountPicker() { - if (callContact == null || callContact!!.number.isEmpty()) { - toast(R.string.unknown_error_occurred) - } else { - startCallIntent(callContact!!.number) + getHandleToUse(intent, callContact!!.number) { handle, setAsDefault -> + CallManager.call?.phoneAccountSelected(handle, setAsDefault) } } diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/DialerActivity.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/DialerActivity.kt index f574e7ed..7931bb41 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/DialerActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/DialerActivity.kt @@ -43,7 +43,7 @@ class DialerActivity : SimpleActivity() { @SuppressLint("MissingPermission") private fun initOutgoingCall() { try { - getHandleToUse(intent, callNumber.toString()) { handle -> + getHandleToUse(intent, callNumber.toString()) { handle, setAsDefault -> Bundle().apply { putParcelable(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE, handle) putBoolean(TelecomManager.EXTRA_START_CALL_WITH_VIDEO_STATE, false) diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/dialogs/SelectSIMDialog.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/dialogs/SelectSIMDialog.kt index 94a85266..dd5cda33 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/dialogs/SelectSIMDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/dialogs/SelectSIMDialog.kt @@ -14,7 +14,7 @@ import com.simplemobiletools.dialer.extensions.getAvailableSIMCardLabels import kotlinx.android.synthetic.main.dialog_select_sim.view.* @SuppressLint("MissingPermission") -class SelectSIMDialog(val activity: BaseSimpleActivity, val phoneNumber: String, val callback: (handle: PhoneAccountHandle) -> Unit) { +class SelectSIMDialog(val activity: BaseSimpleActivity, val phoneNumber: String, val callback: (handle: PhoneAccountHandle, setAsDefault: Boolean) -> Unit) { private var dialog: AlertDialog? = null private val view = activity.layoutInflater.inflate(R.layout.dialog_select_sim, null) @@ -41,7 +41,7 @@ class SelectSIMDialog(val activity: BaseSimpleActivity, val phoneNumber: String, activity.config.saveCustomSIM(phoneNumber, label) } - callback(handle) + callback(handle, view.select_sim_remember.isChecked) dialog?.dismiss() } } diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/extensions/Activity.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/extensions/Activity.kt index f52cdbe3..326e0235 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/extensions/Activity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/extensions/Activity.kt @@ -15,7 +15,7 @@ import com.simplemobiletools.dialer.dialogs.SelectSIMDialog fun SimpleActivity.startCallIntent(recipient: String) { if (isDefaultDialer()) { - getHandleToUse(null, recipient) { handle -> + getHandleToUse(null, recipient) { handle, setAsDefault -> launchCallIntent(recipient, handle) } } else { @@ -25,22 +25,22 @@ fun SimpleActivity.startCallIntent(recipient: String) { // used at devices with multiple SIM cards @SuppressLint("MissingPermission") -fun SimpleActivity.getHandleToUse(intent: Intent?, phoneNumber: String, callback: (PhoneAccountHandle) -> Unit) { +fun SimpleActivity.getHandleToUse(intent: Intent?, phoneNumber: String, callback: (handle: PhoneAccountHandle, setAsDefault: Boolean) -> Unit) { handlePermission(PERMISSION_READ_PHONE_STATE) { if (it) { val defaultHandle = telecomManager.getDefaultOutgoingPhoneAccount(PhoneAccount.SCHEME_TEL) when { - intent?.hasExtra(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE) == true -> callback(intent.getParcelableExtra(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE)!!) + intent?.hasExtra(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE) == true -> callback(intent.getParcelableExtra(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE)!!, false) config.getCustomSIM(phoneNumber)?.isNotEmpty() == true -> { val storedLabel = Uri.decode(config.getCustomSIM(phoneNumber)) val availableSIMs = getAvailableSIMCardLabels() val firstornull = availableSIMs.firstOrNull { it.label == storedLabel }?.handle ?: availableSIMs.first().handle - callback(firstornull) + callback(firstornull, false) } - defaultHandle != null -> callback(defaultHandle) + defaultHandle != null -> callback(defaultHandle, true) else -> { - SelectSIMDialog(this, phoneNumber) { handle -> - callback(handle) + SelectSIMDialog(this, phoneNumber) { handle, setAsDefault -> + callback(handle, setAsDefault) } } }