From 674fa1f41b0ec1c9be8f3c17279df47ab8ad299e Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 21 Aug 2024 10:35:31 +0200 Subject: [PATCH] Catch exception when posting a navigation task on main thread --- .../org/linphone/ui/assistant/AssistantActivity.kt | 8 ++++++-- .../org/linphone/ui/call/fragment/NewCallFragment.kt | 6 +++++- .../ui/call/fragment/TransferCallFragment.kt | 6 +++++- .../main/java/org/linphone/ui/main/MainActivity.kt | 12 ++++++++++-- .../viewmodel/ConversationForwardMessageViewModel.kt | 2 -- 5 files changed, 26 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/linphone/ui/assistant/AssistantActivity.kt b/app/src/main/java/org/linphone/ui/assistant/AssistantActivity.kt index 6d6ba9c1d..7f1275c1b 100644 --- a/app/src/main/java/org/linphone/ui/assistant/AssistantActivity.kt +++ b/app/src/main/java/org/linphone/ui/assistant/AssistantActivity.kt @@ -93,8 +93,12 @@ class AssistantActivity : GenericActivity() { coreContext.postOnCoreThread { core -> if (core.accountList.isNotEmpty()) { coreContext.postOnMainThread { - Log.w("$TAG At least one account was found, leaving assistant") - finish() + try { + Log.w("$TAG At least one account was found, leaving assistant") + finish() + } catch (ise: IllegalStateException) { + Log.e("$TAG Can't finish activity: $ise") + } } } } diff --git a/app/src/main/java/org/linphone/ui/call/fragment/NewCallFragment.kt b/app/src/main/java/org/linphone/ui/call/fragment/NewCallFragment.kt index 549379c63..3057c346d 100644 --- a/app/src/main/java/org/linphone/ui/call/fragment/NewCallFragment.kt +++ b/app/src/main/java/org/linphone/ui/call/fragment/NewCallFragment.kt @@ -42,7 +42,11 @@ class NewCallFragment : AbstractNewTransferCallFragment() { coreContext.startAudioCall(address) coreContext.postOnMainThread { - findNavController().popBackStack() + try { + findNavController().popBackStack() + } catch (ise: IllegalStateException) { + Log.e("$TAG Can't go back: $ise") + } } } } diff --git a/app/src/main/java/org/linphone/ui/call/fragment/TransferCallFragment.kt b/app/src/main/java/org/linphone/ui/call/fragment/TransferCallFragment.kt index eddebca1a..34801a668 100644 --- a/app/src/main/java/org/linphone/ui/call/fragment/TransferCallFragment.kt +++ b/app/src/main/java/org/linphone/ui/call/fragment/TransferCallFragment.kt @@ -56,7 +56,11 @@ class TransferCallFragment : AbstractNewTransferCallFragment() { callViewModel.blindTransferCallTo(address) coreContext.postOnMainThread { - findNavController().popBackStack() + try { + findNavController().popBackStack() + } catch (ise: IllegalStateException) { + Log.e("$TAG Can't go back: $ise") + } } } } diff --git a/app/src/main/java/org/linphone/ui/main/MainActivity.kt b/app/src/main/java/org/linphone/ui/main/MainActivity.kt index 076140b6c..5fb9afe8c 100644 --- a/app/src/main/java/org/linphone/ui/main/MainActivity.kt +++ b/app/src/main/java/org/linphone/ui/main/MainActivity.kt @@ -509,12 +509,20 @@ class MainActivity : GenericActivity() { Log.i("$TAG First time Linphone 6.0 has been started, showing Welcome activity") corePreferences.firstLaunch = false coreContext.postOnMainThread { - startActivity(Intent(this, WelcomeActivity::class.java)) + try { + startActivity(Intent(this, WelcomeActivity::class.java)) + } catch (ise: IllegalStateException) { + Log.e("$TAG Can't start activity: $ise") + } } } else if (core.accountList.isEmpty()) { Log.w("$TAG No account found, showing Assistant activity") coreContext.postOnMainThread { - startActivity(Intent(this, AssistantActivity::class.java)) + try { + startActivity(Intent(this, AssistantActivity::class.java)) + } catch (ise: IllegalStateException) { + Log.e("$TAG Can't start activity: $ise") + } } } else { if (intent.hasExtra("Chat")) { diff --git a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationForwardMessageViewModel.kt b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationForwardMessageViewModel.kt index 7a6198ecc..60d8e9487 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationForwardMessageViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationForwardMessageViewModel.kt @@ -170,8 +170,6 @@ class ConversationForwardMessageViewModel @UiThread constructor() : AddressSelec ) showNumberOrAddressPickerDialogEvent.postValue(Event(list)) - coreContext.postOnMainThread { - } } } }