diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 4106022b..c978fcb8 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -22,7 +22,7 @@ android {
}
ndk {
// noinspection ChromeOsAbiSupport
- abiFilters.addAll(listOf("armeabi-v7a", "arm64-v8a"/*, "x86_64"*/))
+ abiFilters.addAll(listOf("armeabi-v7a", "arm64-v8a", "x86_64"))
}
vectorDrawables.useSupportLibrary = true
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 63ac48a3..6a0d90fc 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -45,7 +45,7 @@
android:label="@string/app_name"
android:supportsRtl="true"
android:largeHeap="true"
- android:enableOnBackInvokedCallback="false"
+ android:enableOnBackInvokedCallback="true"
android:theme="@style/Theme.Material3.DayNight.NoActionBar"
tools:remove="android:appComponentFactory"
tools:targetApi="33">
@@ -55,7 +55,6 @@
android:configChanges="orientation|keyboardHidden|screenSize"
android:exported="true"
android:launchMode="singleTask"
- android:enableOnBackInvokedCallback="true"
android:windowSoftInputMode="adjustResize" >
@@ -77,6 +76,14 @@
+
+
+
-
-
-
= 33)
+ onBackInvokedDispatcher.registerOnBackInvokedCallback(
+ OnBackInvokedDispatcher.PRIORITY_DEFAULT,
+ backInvokedCallback
+ )
+ else
+ onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
+
Utils.addActivity("about")
val aboutTitle = String.format(getString(R.string.about_title))
@@ -62,9 +77,6 @@ class AboutActivity : ComponentActivity() {
}
}
}
-
- onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
-
}
@OptIn(ExperimentalMaterial3Api::class)
@@ -114,6 +126,15 @@ class AboutActivity : ComponentActivity() {
}
}
+ override fun onDestroy() {
+ if (Build.VERSION.SDK_INT >= 33) {
+ onBackInvokedDispatcher.unregisterOnBackInvokedCallback(backInvokedCallback)
+ } else {
+ onBackPressedCallback.remove()
+ }
+ super.onDestroy()
+ }
+
private fun goBack() {
BaresipService.activities.remove("about")
setResult(RESULT_CANCELED, Intent())
diff --git a/app/src/main/kotlin/com/tutpro/baresip/AccountActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/AccountActivity.kt
index f81f890c..fdd5d77a 100644
--- a/app/src/main/kotlin/com/tutpro/baresip/AccountActivity.kt
+++ b/app/src/main/kotlin/com/tutpro/baresip/AccountActivity.kt
@@ -2,7 +2,10 @@ package com.tutpro.baresip
import android.content.Context
import android.content.Intent
+import android.os.Build
import android.os.Bundle
+import android.window.OnBackInvokedCallback
+import android.window.OnBackInvokedDispatcher
import androidx.activity.ComponentActivity
import androidx.activity.OnBackPressedCallback
import androidx.activity.compose.setContent
@@ -133,6 +136,10 @@ class AccountActivity : ComponentActivity() {
private val showAlert = mutableStateOf(false)
private val showStun = mutableStateOf(false)
+ private val backInvokedCallback = OnBackInvokedCallback {
+ goBack()
+ }
+
private val onBackPressedCallback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
goBack()
@@ -145,6 +152,14 @@ class AccountActivity : ComponentActivity() {
enableEdgeToEdge()
+ if (Build.VERSION.SDK_INT >= 33)
+ onBackInvokedDispatcher.registerOnBackInvokedCallback(
+ OnBackInvokedDispatcher.PRIORITY_DEFAULT,
+ backInvokedCallback
+ )
+ else
+ onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
+
aor = intent.getStringExtra("aor")!!
Utils.addActivity("account,$aor")
@@ -207,10 +222,6 @@ class AccountActivity : ComponentActivity() {
}
}
}
-
- onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
-
- // Api.account_debug(acc.accp)
}
@OptIn(ExperimentalMaterial3Api::class)
@@ -1619,6 +1630,15 @@ class AccountActivity : ComponentActivity() {
super.onPause()
}
+ override fun onDestroy() {
+ if (Build.VERSION.SDK_INT >= 33) {
+ onBackInvokedDispatcher.unregisterOnBackInvokedCallback(backInvokedCallback)
+ } else {
+ onBackPressedCallback.remove()
+ }
+ super.onDestroy()
+ }
+
private fun returnResult(code: Int) {
val i = Intent()
if (code == RESULT_OK)
diff --git a/app/src/main/kotlin/com/tutpro/baresip/AccountsActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/AccountsActivity.kt
index c195d2c6..5998928d 100644
--- a/app/src/main/kotlin/com/tutpro/baresip/AccountsActivity.kt
+++ b/app/src/main/kotlin/com/tutpro/baresip/AccountsActivity.kt
@@ -2,8 +2,11 @@ package com.tutpro.baresip
import android.content.Context
import android.content.Intent
+import android.os.Build
import android.os.Bundle
import android.os.SystemClock
+import android.window.OnBackInvokedCallback
+import android.window.OnBackInvokedDispatcher
import androidx.activity.ComponentActivity
import androidx.activity.OnBackPressedCallback
import androidx.activity.compose.setContent
@@ -82,6 +85,10 @@ class AccountsActivity : ComponentActivity() {
private val alertMessage = mutableStateOf("")
private val showAlert = mutableStateOf(false)
+ private val backInvokedCallback = OnBackInvokedCallback {
+ goBack()
+ }
+
private val onBackPressedCallback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
goBack()
@@ -94,6 +101,14 @@ class AccountsActivity : ComponentActivity() {
enableEdgeToEdge()
+ if (Build.VERSION.SDK_INT >= 33)
+ onBackInvokedDispatcher.registerOnBackInvokedCallback(
+ OnBackInvokedDispatcher.PRIORITY_DEFAULT,
+ backInvokedCallback
+ )
+ else
+ onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
+
val title = String.format(getString(R.string.accounts))
aor = intent.getStringExtra("aor")!!
@@ -114,9 +129,6 @@ class AccountsActivity : ComponentActivity() {
}
}
}
-
- onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
-
}
@OptIn(ExperimentalMaterial3Api::class)
@@ -468,6 +480,15 @@ class AccountsActivity : ComponentActivity() {
showAccounts.value = true
}
+ override fun onDestroy() {
+ if (Build.VERSION.SDK_INT >= 33) {
+ onBackInvokedDispatcher.unregisterOnBackInvokedCallback(backInvokedCallback)
+ } else {
+ onBackPressedCallback.remove()
+ }
+ super.onDestroy()
+ }
+
companion object {
fun saveAccounts() {
diff --git a/app/src/main/kotlin/com/tutpro/baresip/AndroidContactActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/AndroidContactActivity.kt
index dd46e042..6bbe6f40 100644
--- a/app/src/main/kotlin/com/tutpro/baresip/AndroidContactActivity.kt
+++ b/app/src/main/kotlin/com/tutpro/baresip/AndroidContactActivity.kt
@@ -4,7 +4,10 @@ import android.app.Activity
import android.content.Context
import android.content.Intent
import android.net.Uri
+import android.os.Build
import android.os.Bundle
+import android.window.OnBackInvokedCallback
+import android.window.OnBackInvokedDispatcher
import androidx.activity.ComponentActivity
import androidx.activity.OnBackPressedCallback
import androidx.activity.compose.setContent
@@ -61,6 +64,10 @@ class AndroidContactActivity : ComponentActivity() {
private var color = 0
+ private val backInvokedCallback = OnBackInvokedCallback {
+ goBack()
+ }
+
private val onBackPressedCallback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
goBack()
@@ -73,6 +80,14 @@ class AndroidContactActivity : ComponentActivity() {
enableEdgeToEdge()
+ if (Build.VERSION.SDK_INT >= 33)
+ onBackInvokedDispatcher.registerOnBackInvokedCallback(
+ OnBackInvokedDispatcher.PRIORITY_DEFAULT,
+ backInvokedCallback
+ )
+ else
+ onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
+
aor = intent.getStringExtra("aor")!!
name = intent.getStringExtra("name")!!
@@ -84,6 +99,8 @@ class AndroidContactActivity : ComponentActivity() {
goBack()
}
+ Utils.addActivity("android contact, $name")
+
setContent {
AppTheme {
Surface(
@@ -94,10 +111,6 @@ class AndroidContactActivity : ComponentActivity() {
}
}
}
-
- Utils.addActivity("android contact, $name")
-
- onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
}
@OptIn(ExperimentalMaterial3Api::class)
@@ -268,6 +281,15 @@ class AndroidContactActivity : ComponentActivity() {
}
}
+ override fun onDestroy() {
+ if (Build.VERSION.SDK_INT >= 33) {
+ onBackInvokedDispatcher.unregisterOnBackInvokedCallback(backInvokedCallback)
+ } else {
+ onBackPressedCallback.remove()
+ }
+ super.onDestroy()
+ }
+
private fun goBack() {
BaresipService.activities.remove("android contact,$name")
setResult(RESULT_CANCELED, Intent(this, MainActivity::class.java))
diff --git a/app/src/main/kotlin/com/tutpro/baresip/AudioActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/AudioActivity.kt
index 90c14664..6494f316 100644
--- a/app/src/main/kotlin/com/tutpro/baresip/AudioActivity.kt
+++ b/app/src/main/kotlin/com/tutpro/baresip/AudioActivity.kt
@@ -1,6 +1,9 @@
package com.tutpro.baresip
+import android.os.Build
import android.os.Bundle
+import android.window.OnBackInvokedCallback
+import android.window.OnBackInvokedDispatcher
import androidx.activity.ComponentActivity
import androidx.activity.OnBackPressedCallback
import androidx.activity.compose.setContent
@@ -77,6 +80,10 @@ class AudioActivity : ComponentActivity() {
private val alertMessage = mutableStateOf("")
private val showAlert = mutableStateOf(false)
+ private val backInvokedCallback = OnBackInvokedCallback {
+ goBack()
+ }
+
private val onBackPressedCallback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
goBack()
@@ -89,6 +96,14 @@ class AudioActivity : ComponentActivity() {
enableEdgeToEdge()
+ if (Build.VERSION.SDK_INT >= 33)
+ onBackInvokedDispatcher.registerOnBackInvokedCallback(
+ OnBackInvokedDispatcher.PRIORITY_DEFAULT,
+ backInvokedCallback
+ )
+ else
+ onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
+
val title = String.format(getString(R.string.configuration))
Utils.addActivity("audio")
@@ -106,8 +121,6 @@ class AudioActivity : ComponentActivity() {
}
}
}
-
- onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
}
@Composable
@@ -642,6 +655,15 @@ class AudioActivity : ComponentActivity() {
finish()
}
+ override fun onDestroy() {
+ if (Build.VERSION.SDK_INT >= 33) {
+ onBackInvokedDispatcher.unregisterOnBackInvokedCallback(backInvokedCallback)
+ } else {
+ onBackPressedCallback.remove()
+ }
+ super.onDestroy()
+ }
+
private fun goBack() {
BaresipService.activities.remove("audio")
finish()
diff --git a/app/src/main/kotlin/com/tutpro/baresip/BaresipContactActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/BaresipContactActivity.kt
index a4cb5573..eb8e91aa 100644
--- a/app/src/main/kotlin/com/tutpro/baresip/BaresipContactActivity.kt
+++ b/app/src/main/kotlin/com/tutpro/baresip/BaresipContactActivity.kt
@@ -9,10 +9,13 @@ import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.graphics.Matrix
import android.net.Uri
+import android.os.Build
import android.os.Bundle
import android.provider.ContactsContract
import android.provider.ContactsContract.CommonDataKinds
import android.provider.ContactsContract.Contacts.Data
+import android.window.OnBackInvokedCallback
+import android.window.OnBackInvokedDispatcher
import androidx.activity.ComponentActivity
import androidx.activity.OnBackPressedCallback
import androidx.activity.compose.rememberLauncherForActivityResult
@@ -105,6 +108,10 @@ class BaresipContactActivity : ComponentActivity() {
private val textAvatarColor = mutableIntStateOf(0)
private val imageAvatarUri = mutableStateOf("")
+ private val backInvokedCallback = OnBackInvokedCallback {
+ goBack()
+ }
+
private val onBackPressedCallback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
goBack()
@@ -117,6 +124,14 @@ class BaresipContactActivity : ComponentActivity() {
enableEdgeToEdge()
+ if (Build.VERSION.SDK_INT >= 33)
+ onBackInvokedDispatcher.registerOnBackInvokedCallback(
+ OnBackInvokedDispatcher.PRIORITY_DEFAULT,
+ backInvokedCallback
+ )
+ else
+ onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
+
val title: String
new = intent.getBooleanExtra("new", false)
@@ -150,6 +165,8 @@ class BaresipContactActivity : ComponentActivity() {
}
}
+ Utils.addActivity("baresip contact,$new,$uriOrName")
+
setContent {
AppTheme {
Surface(
@@ -160,10 +177,6 @@ class BaresipContactActivity : ComponentActivity() {
}
}
}
-
- Utils.addActivity("baresip contact,$new,$uriOrName")
-
- onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
}
@Composable
@@ -687,6 +700,15 @@ class BaresipContactActivity : ComponentActivity() {
}
}
+ override fun onDestroy() {
+ if (Build.VERSION.SDK_INT >= 33) {
+ onBackInvokedDispatcher.unregisterOnBackInvokedCallback(backInvokedCallback)
+ } else {
+ onBackPressedCallback.remove()
+ }
+ super.onDestroy()
+ }
+
private fun goBack() {
BaresipService.activities.remove("baresip contact,$new,$uriOrName")
setResult(RESULT_CANCELED, Intent(this, MainActivity::class.java))
diff --git a/app/src/main/kotlin/com/tutpro/baresip/CallDetailsActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/CallDetailsActivity.kt
index 476558a3..28ad24db 100644
--- a/app/src/main/kotlin/com/tutpro/baresip/CallDetailsActivity.kt
+++ b/app/src/main/kotlin/com/tutpro/baresip/CallDetailsActivity.kt
@@ -3,8 +3,11 @@ package com.tutpro.baresip
import android.content.Context
import android.media.AudioAttributes
import android.media.MediaPlayer
+import android.os.Build
import android.os.Bundle
import android.text.format.DateUtils
+import android.window.OnBackInvokedCallback
+import android.window.OnBackInvokedDispatcher
import androidx.activity.ComponentActivity
import androidx.activity.OnBackPressedCallback
import androidx.activity.compose.setContent
@@ -67,6 +70,10 @@ class CallDetailsActivity : ComponentActivity() {
private val encPlayer = MediaPlayer()
private var position = 0
+ private val backInvokedCallback = OnBackInvokedCallback {
+ goBack()
+ }
+
private val onBackPressedCallback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
goBack()
@@ -79,6 +86,14 @@ class CallDetailsActivity : ComponentActivity() {
enableEdgeToEdge()
+ if (Build.VERSION.SDK_INT >= 33)
+ onBackInvokedDispatcher.registerOnBackInvokedCallback(
+ OnBackInvokedDispatcher.PRIORITY_DEFAULT,
+ backInvokedCallback
+ )
+ else
+ onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
+
aor = intent.getStringExtra("aor")!!
account = Account.ofAor(aor)!!
peer = intent.getStringExtra("peer")!!
@@ -98,8 +113,6 @@ class CallDetailsActivity : ComponentActivity() {
}
}
}
-
- onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
}
@OptIn(ExperimentalMaterial3Api::class)
@@ -362,6 +375,15 @@ class CallDetailsActivity : ComponentActivity() {
super.onPause()
}
+ override fun onDestroy() {
+ if (Build.VERSION.SDK_INT >= 33) {
+ onBackInvokedDispatcher.unregisterOnBackInvokedCallback(backInvokedCallback)
+ } else {
+ onBackPressedCallback.remove()
+ }
+ super.onDestroy()
+ }
+
private fun goBack() {
BaresipService.activities.remove("call_details,$aor,$peer,$position")
decPlayer.stop()
diff --git a/app/src/main/kotlin/com/tutpro/baresip/CallsActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/CallsActivity.kt
index e5c50178..841c209a 100644
--- a/app/src/main/kotlin/com/tutpro/baresip/CallsActivity.kt
+++ b/app/src/main/kotlin/com/tutpro/baresip/CallsActivity.kt
@@ -4,7 +4,10 @@ import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.graphics.BitmapFactory
+import android.os.Build
import android.os.Bundle
+import android.window.OnBackInvokedCallback
+import android.window.OnBackInvokedDispatcher
import androidx.activity.ComponentActivity
import androidx.activity.OnBackPressedCallback
import androidx.activity.compose.setContent
@@ -70,6 +73,10 @@ class CallsActivity : ComponentActivity() {
private var aor = ""
+ private val backInvokedCallback = OnBackInvokedCallback {
+ goBack()
+ }
+
private val onBackPressedCallback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
goBack()
@@ -82,6 +89,14 @@ class CallsActivity : ComponentActivity() {
enableEdgeToEdge()
+ if (Build.VERSION.SDK_INT >= 33)
+ onBackInvokedDispatcher.registerOnBackInvokedCallback(
+ OnBackInvokedDispatcher.PRIORITY_DEFAULT,
+ backInvokedCallback
+ )
+ else
+ onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
+
val title = String.format(getString(R.string.call_history))
aor = intent.getStringExtra("aor")!!
@@ -103,9 +118,6 @@ class CallsActivity : ComponentActivity() {
}
account.missedCalls = false
- invalidateOptionsMenu()
-
- onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
}
@Composable
@@ -439,14 +451,23 @@ class CallsActivity : ComponentActivity() {
returnResult()
}
+ private fun returnResult() {
+ setResult(RESULT_CANCELED, Intent())
+ finish()
+ }
+
override fun onPause() {
MainActivity.activityAor = aor
super.onPause()
}
- private fun returnResult() {
- setResult(RESULT_CANCELED, Intent())
- finish()
+ override fun onDestroy() {
+ if (Build.VERSION.SDK_INT >= 33) {
+ onBackInvokedDispatcher.unregisterOnBackInvokedCallback(backInvokedCallback)
+ } else {
+ onBackPressedCallback.remove()
+ }
+ super.onDestroy()
}
private fun aorGenerateHistory(aor: String) {
diff --git a/app/src/main/kotlin/com/tutpro/baresip/ChatActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/ChatActivity.kt
index 8c060eab..50f5bf49 100644
--- a/app/src/main/kotlin/com/tutpro/baresip/ChatActivity.kt
+++ b/app/src/main/kotlin/com/tutpro/baresip/ChatActivity.kt
@@ -2,11 +2,14 @@ package com.tutpro.baresip
import android.content.Context
import android.content.Intent
+import android.os.Build
import android.os.Bundle
import android.os.SystemClock
import android.text.format.DateUtils.isToday
import android.view.inputmethod.InputMethodManager
import android.widget.Toast
+import android.window.OnBackInvokedCallback
+import android.window.OnBackInvokedDispatcher
import androidx.activity.ComponentActivity
import androidx.activity.OnBackPressedCallback
import androidx.activity.compose.setContent
@@ -98,6 +101,10 @@ class ChatActivity : ComponentActivity() {
private var unsentMessage = ""
private var keyboardController: SoftwareKeyboardController? = null
+ private val backInvokedCallback = OnBackInvokedCallback {
+ goBack()
+ }
+
private val onBackPressedCallback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
goBack()
@@ -110,6 +117,14 @@ class ChatActivity : ComponentActivity() {
enableEdgeToEdge()
+ if (Build.VERSION.SDK_INT >= 33)
+ onBackInvokedDispatcher.registerOnBackInvokedCallback(
+ OnBackInvokedDispatcher.PRIORITY_DEFAULT,
+ backInvokedCallback
+ )
+ else
+ onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
+
aor = intent.getStringExtra("aor")!!
peerUri = intent.getStringExtra("peer")!!
account = UserAgent.ofAor(aor)!!.account
@@ -156,8 +171,6 @@ class ChatActivity : ComponentActivity() {
}
}
}
-
- onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
}
@Composable
@@ -622,6 +635,15 @@ class ChatActivity : ComponentActivity() {
MainActivity.activityAor = aor
}
+ override fun onDestroy() {
+ if (Build.VERSION.SDK_INT >= 33) {
+ onBackInvokedDispatcher.unregisterOnBackInvokedCallback(backInvokedCallback)
+ } else {
+ onBackPressedCallback.remove()
+ }
+ super.onDestroy()
+ }
+
private fun goBack() {
var save = false
for (m in chatMessages) {
diff --git a/app/src/main/kotlin/com/tutpro/baresip/ChatsActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/ChatsActivity.kt
index 0e06bf68..1edf2dd9 100644
--- a/app/src/main/kotlin/com/tutpro/baresip/ChatsActivity.kt
+++ b/app/src/main/kotlin/com/tutpro/baresip/ChatsActivity.kt
@@ -3,8 +3,11 @@ package com.tutpro.baresip
import android.content.Context
import android.content.Intent
import android.graphics.BitmapFactory
+import android.os.Build
import android.os.Bundle
import android.text.format.DateUtils.isToday
+import android.window.OnBackInvokedCallback
+import android.window.OnBackInvokedDispatcher
import androidx.activity.ComponentActivity
import androidx.activity.OnBackPressedCallback
import androidx.activity.compose.setContent
@@ -99,6 +102,10 @@ class ChatsActivity: ComponentActivity() {
private val alertMessage = mutableStateOf("")
private val showAlert = mutableStateOf(false)
+ private val backInvokedCallback = OnBackInvokedCallback {
+ goBack()
+ }
+
private val onBackPressedCallback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
goBack()
@@ -111,6 +118,14 @@ class ChatsActivity: ComponentActivity() {
enableEdgeToEdge()
+ if (Build.VERSION.SDK_INT >= 33)
+ onBackInvokedDispatcher.registerOnBackInvokedCallback(
+ OnBackInvokedDispatcher.PRIORITY_DEFAULT,
+ backInvokedCallback
+ )
+ else
+ onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
+
aor = intent.extras!!.getString("aor")!!
Utils.addActivity("chats,$aor")
account = UserAgent.ofAor(aor)!!.account
@@ -135,9 +150,6 @@ class ChatsActivity: ComponentActivity() {
}
}
}
-
- onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
-
}
@Composable
@@ -670,6 +682,15 @@ class ChatsActivity: ComponentActivity() {
_uaMessages.value = uaMessages(aor)
}
+ override fun onDestroy() {
+ if (Build.VERSION.SDK_INT >= 33) {
+ onBackInvokedDispatcher.unregisterOnBackInvokedCallback(backInvokedCallback)
+ } else {
+ onBackPressedCallback.remove()
+ }
+ super.onDestroy()
+ }
+
private fun goBack() {
BaresipService.activities.remove("chats,$aor")
returnResult()
diff --git a/app/src/main/kotlin/com/tutpro/baresip/CodecsActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/CodecsActivity.kt
index 6eff079e..00f86716 100644
--- a/app/src/main/kotlin/com/tutpro/baresip/CodecsActivity.kt
+++ b/app/src/main/kotlin/com/tutpro/baresip/CodecsActivity.kt
@@ -1,6 +1,9 @@
package com.tutpro.baresip
+import android.os.Build
import android.os.Bundle
+import android.window.OnBackInvokedCallback
+import android.window.OnBackInvokedDispatcher
import androidx.activity.ComponentActivity
import androidx.activity.OnBackPressedCallback
import androidx.activity.compose.setContent
@@ -65,6 +68,10 @@ class CodecsActivity : ComponentActivity() {
private val alertMessage = mutableStateOf("")
private val showAlert = mutableStateOf(false)
+ private val backInvokedCallback = OnBackInvokedCallback {
+ goBack()
+ }
+
private val onBackPressedCallback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
goBack()
@@ -77,6 +84,14 @@ class CodecsActivity : ComponentActivity() {
enableEdgeToEdge()
+ if (Build.VERSION.SDK_INT >= 33)
+ onBackInvokedDispatcher.registerOnBackInvokedCallback(
+ OnBackInvokedDispatcher.PRIORITY_DEFAULT,
+ backInvokedCallback
+ )
+ else
+ onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
+
aor = intent.getStringExtra("aor")!!
media = intent.getStringExtra("media")!!
@@ -114,8 +129,6 @@ class CodecsActivity : ComponentActivity() {
}
}
}
-
- onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
}
@OptIn(ExperimentalMaterial3Api::class)
@@ -353,4 +366,12 @@ class CodecsActivity : ComponentActivity() {
super.onPause()
}
+ override fun onDestroy() {
+ if (Build.VERSION.SDK_INT >= 33) {
+ onBackInvokedDispatcher.unregisterOnBackInvokedCallback(backInvokedCallback)
+ } else {
+ onBackPressedCallback.remove()
+ }
+ super.onDestroy()
+ }
}
diff --git a/app/src/main/kotlin/com/tutpro/baresip/ConfigActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/ConfigActivity.kt
index a6f32256..be963d21 100644
--- a/app/src/main/kotlin/com/tutpro/baresip/ConfigActivity.kt
+++ b/app/src/main/kotlin/com/tutpro/baresip/ConfigActivity.kt
@@ -10,6 +10,8 @@ import android.os.Build
import android.os.Bundle
import android.os.PowerManager
import android.provider.Settings
+import android.window.OnBackInvokedCallback
+import android.window.OnBackInvokedDispatcher
import androidx.activity.ComponentActivity
import androidx.activity.OnBackPressedCallback
import androidx.activity.compose.setContent
@@ -129,6 +131,10 @@ class ConfigActivity : ComponentActivity() {
private val onNegativeClicked = mutableStateOf({})
private val showDialog = mutableStateOf(false)
+ private val backInvokedCallback = OnBackInvokedCallback {
+ goBack()
+ }
+
private val onBackPressedCallback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
goBack()
@@ -201,6 +207,14 @@ class ConfigActivity : ComponentActivity() {
enableEdgeToEdge()
+ if (Build.VERSION.SDK_INT >= 33)
+ onBackInvokedDispatcher.registerOnBackInvokedCallback(
+ OnBackInvokedDispatcher.PRIORITY_DEFAULT,
+ backInvokedCallback
+ )
+ else
+ onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
+
val title = String.format(getString(R.string.configuration))
Utils.addActivity("config")
@@ -291,8 +305,6 @@ class ConfigActivity : ComponentActivity() {
}
}
}
-
- onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
}
@Composable
@@ -1279,6 +1291,12 @@ class ConfigActivity : ComponentActivity() {
}
+ override fun onStart() {
+ super.onStart()
+ requestPermissionLauncher =
+ registerForActivityResult(ActivityResultContracts.RequestPermission()) {}
+ }
+
override fun onResume() {
super.onResume()
if (managingOverlayPermission) {
@@ -1287,10 +1305,13 @@ class ConfigActivity : ComponentActivity() {
}
}
- override fun onStart() {
- super.onStart()
- requestPermissionLauncher =
- registerForActivityResult(ActivityResultContracts.RequestPermission()) {}
+ override fun onDestroy() {
+ if (Build.VERSION.SDK_INT >= 33) {
+ onBackInvokedDispatcher.unregisterOnBackInvokedCallback(backInvokedCallback)
+ } else {
+ onBackPressedCallback.remove()
+ }
+ super.onDestroy()
}
private fun isAppearOnTopPermissionGranted(ctx: Context): Boolean {
diff --git a/app/src/main/kotlin/com/tutpro/baresip/ContactsActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/ContactsActivity.kt
index 50021ea6..81c47d8c 100644
--- a/app/src/main/kotlin/com/tutpro/baresip/ContactsActivity.kt
+++ b/app/src/main/kotlin/com/tutpro/baresip/ContactsActivity.kt
@@ -4,9 +4,12 @@ import android.app.Activity
import android.content.ContentValues
import android.content.Context
import android.content.Intent
+import android.os.Build
import android.os.Bundle
import android.os.SystemClock
import android.provider.ContactsContract
+import android.window.OnBackInvokedCallback
+import android.window.OnBackInvokedDispatcher
import androidx.activity.ComponentActivity
import androidx.activity.OnBackPressedCallback
import androidx.activity.compose.setContent
@@ -71,6 +74,10 @@ class ContactsActivity : ComponentActivity() {
private var newAndroidName: String? = null
private var lastClick: Long = 0
+ private val backInvokedCallback = OnBackInvokedCallback {
+ goBack()
+ }
+
private val onBackPressedCallback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
goBack()
@@ -91,6 +98,14 @@ class ContactsActivity : ComponentActivity() {
enableEdgeToEdge()
+ if (Build.VERSION.SDK_INT >= 33)
+ onBackInvokedDispatcher.registerOnBackInvokedCallback(
+ OnBackInvokedDispatcher.PRIORITY_DEFAULT,
+ backInvokedCallback
+ )
+ else
+ onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
+
val title = String.format(getString(R.string.contacts))
aor = intent.getStringExtra("aor")!!
@@ -126,8 +141,6 @@ class ContactsActivity : ComponentActivity() {
}
}
}
-
- onBackPressedDispatcher.addCallback(this, onBackPressedCallback)
}
@OptIn(ExperimentalMaterial3Api::class)
@@ -419,6 +432,15 @@ class ContactsActivity : ComponentActivity() {
}
}
+ override fun onDestroy() {
+ if (Build.VERSION.SDK_INT >= 33) {
+ onBackInvokedDispatcher.unregisterOnBackInvokedCallback(backInvokedCallback)
+ } else {
+ onBackPressedCallback.remove()
+ }
+ super.onDestroy()
+ }
+
private fun goBack() {
BaresipService.activities.remove("contacts,$aor")
setResult(RESULT_OK, Intent())