diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 1bf78272..348e8139 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -13,22 +13,21 @@ + + + + + + - - - - - - - + + + + + + + + { + Log.d("Baresip", "Got sip URI $uriStr") + var ua = UserAgent.ofDomain(Utils.uriHostPart(uriStr)) + if (ua == null) + ua = BaresipService.uas[0] + spinToAor(ua.account.aor) + resumeAction = "call" + ua.account.resumeUri = uriStr + } + "tel" -> { + Log.d("Baresip", "Got tel URI $uriStr") + val acc = BaresipService.uas[0].account + spinToAor(acc.aor) + resumeAction = "call" + acc.resumeUri = uriStr.replace("tel", "sip") + "@" + acc.aor + } + else -> { + Toast.makeText(applicationContext, getString(R.string.invalid_sip_uri), + Toast.LENGTH_SHORT).show() + return + } + } + } + } else { + if (intent.getStringExtra("action") != null) + handleIntent(intent) + } } private fun handleIntent(intent: Intent) { @@ -517,7 +557,7 @@ class MainActivity : AppCompatActivity() { if (ua.account.aor != aorSpinner.tag) spinToAor(ua.account.aor) resumeAction = action - resumeUri = intent.getStringExtra("peer")!! + ua.account.resumeUri = intent.getStringExtra("peer")!! } "call show", "call answer" -> { val callp = intent.getStringExtra("callp")!! @@ -594,7 +634,7 @@ class MainActivity : AppCompatActivity() { "call reject" -> rejectButton.performClick() "call" -> { - callUri.setText(resumeUri) + callUri.setText(UserAgent.uas()[aorSpinner.selectedItemPosition].account.resumeUri) callButton.performClick() } "transfer show", "transfer accept" -> @@ -628,13 +668,14 @@ class MainActivity : AppCompatActivity() { } } resumeAction = "" - resumeUri = "" } override fun onPause() { Log.d("Baresip", "Main onPause") Utils.addActivity("main") visible = false + if (UserAgent.uas().isNotEmpty() && aorSpinner.selectedItemPosition >= 0) + UserAgent.uas()[aorSpinner.selectedItemPosition].account.resumeUri = callUri.text.toString() super.onPause() } @@ -870,6 +911,7 @@ class MainActivity : AppCompatActivity() { InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS dialpadButton.setImageResource(R.drawable.dialpad_off) dialpadButton.tag = "off" + ua.account.resumeUri = "" showCall(ua) if (acc.missedCalls) callsButton.setImageResource(R.drawable.calls_missed) @@ -1195,7 +1237,7 @@ class MainActivity : AppCompatActivity() { } val context = this val builder = AlertDialog.Builder(this, R.style.AlertDialog) - with (builder) { + with(builder) { setView(layout) setPositiveButton(android.R.string.ok) { dialog, _ -> imm.hideSoftInputFromWindow(input.windowToken, 0) @@ -1251,7 +1293,7 @@ class MainActivity : AppCompatActivity() { } val context = this val builder = AlertDialog.Builder(this, R.style.AlertDialog) - with (builder) { + with(builder) { setView(layout) setPositiveButton(android.R.string.ok) { dialog, _ -> imm.hideSoftInputFromWindow(input.windowToken, 0) @@ -1444,7 +1486,10 @@ class MainActivity : AppCompatActivity() { private fun showCall(ua: UserAgent) { if (Call.uaCalls(ua, "").size == 0) { callTitle.text = getString(R.string.outgoing_call_to_dots) - callUri.text.clear() + if (ua.account.resumeUri != "") + callUri.setText(ua.account.resumeUri) + else + callUri.text.clear() callUri.hint = getString(R.string.callee) callUri.isFocusable = true callUri.isFocusableInTouchMode = true diff --git a/app/src/main/kotlin/com/tutpro/baresip/UserAgent.kt b/app/src/main/kotlin/com/tutpro/baresip/UserAgent.kt index c9942420..172e5ae0 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/UserAgent.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/UserAgent.kt @@ -36,6 +36,12 @@ class UserAgent(val uap: String) { return null } + fun ofDomain(domain: String): UserAgent? { + for (ua in BaresipService.uas) + if (Utils.aorDomain(ua.account.aor) == domain) return ua + return null + } + fun ofUap(uap: String): UserAgent? { for (ua in BaresipService.uas) if (ua.uap == uap) return ua