Skip to content
This repository was archived by the owner on Oct 18, 2024. It is now read-only.

Commit 7613b46

Browse files
committed
fix: remove misleading stacktrace log when launching application (fixes #1392)
1 parent 9e46f50 commit 7613b46

File tree

4 files changed

+24
-15
lines changed

4 files changed

+24
-15
lines changed

app/src/main/java/com/itsaky/androidide/actions/etc/LaunchAppAction.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ class LaunchAppAction(context: Context, override val order: Int) : EditorActivit
6868
}
6969

7070
val activity = data.requireActivity()
71-
IntentUtils.launchApp(activity, packageName)
71+
IntentUtils.launchApp(activity, packageName, logError = false)
7272
}
7373
}
7474

app/src/main/java/com/itsaky/androidide/actions/internalActionUtils.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import com.itsaky.androidide.utils.flashError
2828
/**
2929
* @see openApplicationModuleChooser
3030
*/
31-
fun openApplicationModuleChooser(data: ActionData, callback: (AndroidModule) -> Unit) =
31+
inline fun openApplicationModuleChooser(data: ActionData, crossinline callback: (AndroidModule) -> Unit) =
3232
openApplicationModuleChooser(data.requireContext(), callback)
3333

3434
/**
@@ -38,7 +38,7 @@ fun openApplicationModuleChooser(data: ActionData, callback: (AndroidModule) ->
3838
*
3939
* @param
4040
*/
41-
fun openApplicationModuleChooser(context: Context, callback: (AndroidModule) -> Unit) {
41+
inline fun openApplicationModuleChooser(context: Context, crossinline callback: (AndroidModule) -> Unit) {
4242
val log = ILogger.newInstance("ActionUtils")
4343
val projectManager = IProjectManager.getInstance()
4444
val applications = projectManager.getAndroidAppModules()

app/src/main/java/com/itsaky/androidide/utils/IntentUtils.kt

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -95,32 +95,37 @@ object IntentUtils {
9595
* @param context The context that will be used to fetch the launch intent.
9696
* @param packageName The package name of the application.
9797
*/
98-
fun launchApp(context: Context, packageName: String) {
98+
@JvmOverloads
99+
fun launchApp(context: Context, packageName: String, logError: Boolean = true) : Boolean {
99100
if (Build.VERSION.SDK_INT >= 33) {
100-
launchAppApi33(context, packageName)
101-
return
101+
return launchAppApi33(context, packageName, logError)
102102
}
103103
104-
doLaunchApp(context, packageName)
104+
return doLaunchApp(context, packageName, logError)
105105
}
106106
107-
private fun doLaunchApp(context: Context, packageName: String) {
107+
private fun doLaunchApp(context: Context, packageName: String, logError: Boolean = true) : Boolean {
108108
try {
109109
val launchIntent = context.packageManager.getLaunchIntentForPackage(packageName)
110-
requireNotNull(launchIntent) {
111-
"Cannot get launch intent for package '$packageName'. Is the application installed?"
110+
if (launchIntent == null) {
111+
flashError(R.string.msg_app_launch_failed)
112+
return false
112113
}
113114
114115
context.startActivity(launchIntent)
116+
return true
115117
} catch (e: Throwable) {
116118
flashError(R.string.msg_app_launch_failed)
117-
ILogger.instance().error("Failed to launch application with package name '$packageName'", e)
119+
if (logError) {
120+
ILogger.instance().error("Failed to launch application with package name '$packageName'", e)
121+
}
122+
return false
118123
}
119124
}
120125
121126
@RequiresApi(33)
122-
private fun launchAppApi33(context: Context, packageName: String) {
123-
try {
127+
private fun launchAppApi33(context: Context, packageName: String, logError: Boolean = true) : Boolean {
128+
return try {
124129
val sender = context.packageManager.getLaunchIntentSenderForPackage(packageName)
125130
sender.sendIntent(
126131
context,
@@ -129,9 +134,13 @@ object IntentUtils {
129134
null,
130135
null
131136
)
137+
true
132138
} catch (e: Throwable) {
133139
flashError(R.string.msg_app_launch_failed)
134-
ILogger.instance().error("Failed to launch application with package name '$packageName'", e)
140+
if (logError) {
141+
ILogger.instance().error("Failed to launch app", e)
142+
}
143+
false
135144
}
136145
}
137146
}

resources/src/main/res/values/strings.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -534,7 +534,7 @@
534534
<string name="idepref_general_themeSelector_title">Theme</string>
535535
<string name="idepref_general_themeSelector_summary">Select a theme for AndroidIDE (requires restart).</string>
536536
<string name="idepref_general_projectConfig">Project configuration</string>
537-
<string name="msg_app_launch_failed">Failed to launch application. See IDE logs for more info.</string>
537+
<string name="msg_app_launch_failed">Launch failed. Install the application first.</string>
538538
<string name="idepref_java_diagnosticEnabled_title">Diagnostics enabled</string>
539539
<string name="idepref_java_diagnosticsEnabled_summary">(EXPERIMENTAL) Whether the Java source files should be analyzed for errors or not.</string>
540540
<string name="title_reload_color_schemes">Reload color schemes</string>

0 commit comments

Comments
 (0)