avoid setting a System wide default SIM card

This commit is contained in:
tibbi
2020-05-11 16:22:51 +02:00
parent 4dbc73f3de
commit ec72dc5d90
4 changed files with 12 additions and 12 deletions

View File

@ -259,8 +259,8 @@ class CallActivity : SimpleActivity() {
}
private fun showPhoneAccountPicker() {
getHandleToUse(intent, callContact!!.number) { handle, setAsDefault ->
CallManager.call?.phoneAccountSelected(handle, setAsDefault)
getHandleToUse(intent, callContact!!.number) { handle ->
CallManager.call?.phoneAccountSelected(handle, false)
}
}

View File

@ -43,7 +43,7 @@ class DialerActivity : SimpleActivity() {
@SuppressLint("MissingPermission")
private fun initOutgoingCall() {
try {
getHandleToUse(intent, callNumber.toString()) { handle, setAsDefault ->
getHandleToUse(intent, callNumber.toString()) { handle ->
Bundle().apply {
putParcelable(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE, handle)
putBoolean(TelecomManager.EXTRA_START_CALL_WITH_VIDEO_STATE, false)

View File

@ -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, setAsDefault: Boolean) -> Unit) {
class SelectSIMDialog(val activity: BaseSimpleActivity, val phoneNumber: String, val callback: (handle: PhoneAccountHandle) -> 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, view.select_sim_remember.isChecked)
callback(handle)
dialog?.dismiss()
}
}

View File

@ -15,7 +15,7 @@ import com.simplemobiletools.dialer.dialogs.SelectSIMDialog
fun SimpleActivity.startCallIntent(recipient: String) {
if (isDefaultDialer()) {
getHandleToUse(null, recipient) { handle, setAsDefault ->
getHandleToUse(null, recipient) { handle ->
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: (handle: PhoneAccountHandle, setAsDefault: Boolean) -> Unit) {
fun SimpleActivity.getHandleToUse(intent: Intent?, phoneNumber: String, callback: (handle: PhoneAccountHandle) -> 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)!!, false)
intent?.hasExtra(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE) == true -> callback(intent.getParcelableExtra(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE)!!)
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, false)
callback(firstornull)
}
defaultHandle != null -> callback(defaultHandle, true)
defaultHandle != null -> callback(defaultHandle)
else -> {
SelectSIMDialog(this, phoneNumber) { handle, setAsDefault ->
callback(handle, setAsDefault)
SelectSIMDialog(this, phoneNumber) { handle ->
callback(handle)
}
}
}