Prevent crash if fails to go to outside activity because it doesn't exists or it isn't found

This commit is contained in:
Sylvain Berfini 2025-03-16 20:47:48 +01:00
parent dc4619a7d7
commit 3045378eb0
3 changed files with 35 additions and 19 deletions

View file

@ -20,6 +20,7 @@
package org.linphone.ui package org.linphone.ui
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.ActivityNotFoundException
import android.content.Intent import android.content.Intent
import android.content.res.Configuration import android.content.res.Configuration
import android.content.res.Resources import android.content.res.Resources
@ -40,6 +41,7 @@ import org.linphone.LinphoneApplication.Companion.corePreferences
import org.linphone.R import org.linphone.R
import org.linphone.compatibility.Compatibility import org.linphone.compatibility.Compatibility
import org.linphone.core.tools.Log import org.linphone.core.tools.Log
import org.linphone.ui.main.settings.fragment.SettingsFragment
import org.linphone.utils.ToastUtils import org.linphone.utils.ToastUtils
import org.linphone.utils.slideInToastFromTop import org.linphone.utils.slideInToastFromTop
import org.linphone.utils.slideInToastFromTopForDuration import org.linphone.utils.slideInToastFromTopForDuration
@ -224,6 +226,7 @@ open class GenericActivity : AppCompatActivity() {
fun goToAndroidPermissionSettings() { fun goToAndroidPermissionSettings() {
Log.i("$TAG Going into Android settings for our app") Log.i("$TAG Going into Android settings for our app")
try {
val intent = Intent( val intent = Intent(
Settings.ACTION_APPLICATION_DETAILS_SETTINGS, Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
Uri.fromParts( Uri.fromParts(
@ -233,6 +236,9 @@ open class GenericActivity : AppCompatActivity() {
) )
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
startActivity(intent) startActivity(intent)
} catch (anfe: ActivityNotFoundException) {
Log.e("$TAG Failed to go to android settings: $anfe")
}
} }
protected fun enableWindowSecureMode(enable: Boolean) { protected fun enableWindowSecureMode(enable: Boolean) {

View file

@ -20,6 +20,7 @@
package org.linphone.ui.main.contacts.fragment package org.linphone.ui.main.contacts.fragment
import android.app.Dialog import android.app.Dialog
import android.content.ActivityNotFoundException
import android.content.ClipData import android.content.ClipData
import android.content.ClipboardManager import android.content.ClipboardManager
import android.content.Context import android.content.Context
@ -170,11 +171,15 @@ class ContactFragment : SlidingPaneChildFragment() {
viewModel.openNativeContactEditor.observe(viewLifecycleOwner) { viewModel.openNativeContactEditor.observe(viewLifecycleOwner) {
it.consume { uri -> it.consume { uri ->
try {
val editIntent = Intent(Intent.ACTION_EDIT).apply { val editIntent = Intent(Intent.ACTION_EDIT).apply {
setDataAndType(uri.toUri(), ContactsContract.Contacts.CONTENT_ITEM_TYPE) setDataAndType(uri.toUri(), ContactsContract.Contacts.CONTENT_ITEM_TYPE)
putExtra("finishActivityOnSaveCompleted", true) putExtra("finishActivityOnSaveCompleted", true)
} }
startActivity(editIntent) startActivity(editIntent)
} catch (anfe: ActivityNotFoundException) {
Log.e("$TAG Failed to open native contact editor with URI [$uri]: $anfe")
}
} }
} }

View file

@ -19,6 +19,7 @@
*/ */
package org.linphone.ui.main.settings.fragment package org.linphone.ui.main.settings.fragment
import android.content.ActivityNotFoundException
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.provider.Settings import android.provider.Settings
@ -159,6 +160,7 @@ class SettingsFragment : GenericMainFragment() {
viewModel.goToIncomingCallNotificationChannelSettingsEvent.observe(viewLifecycleOwner) { viewModel.goToIncomingCallNotificationChannelSettingsEvent.observe(viewLifecycleOwner) {
it.consume { it.consume {
Log.w("$TAG Going to incoming call channel settings") Log.w("$TAG Going to incoming call channel settings")
try {
val intent = Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS).apply { val intent = Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS).apply {
putExtra(Settings.EXTRA_APP_PACKAGE, requireContext().packageName) putExtra(Settings.EXTRA_APP_PACKAGE, requireContext().packageName)
putExtra( putExtra(
@ -167,6 +169,9 @@ class SettingsFragment : GenericMainFragment() {
) )
} }
startActivity(intent) startActivity(intent)
} catch (anfe: ActivityNotFoundException) {
Log.e("$TAG Failed to go to notification channel settings: $anfe")
}
} }
} }