diff --git a/app/src/main/java/de/jrpie/android/launcher/Functions.kt b/app/src/main/java/de/jrpie/android/launcher/Functions.kt
index ebfc070..721caa2 100644
--- a/app/src/main/java/de/jrpie/android/launcher/Functions.kt
+++ b/app/src/main/java/de/jrpie/android/launcher/Functions.kt
@@ -3,6 +3,7 @@ package de.jrpie.android.launcher
import android.app.Activity
import android.app.Service
import android.app.role.RoleManager
+import android.content.ActivityNotFoundException
import android.content.ClipData
import android.content.ClipboardManager
import android.content.Context
@@ -16,6 +17,7 @@ import android.os.UserHandle
import android.os.UserManager
import android.provider.Settings
import android.util.Log
+import android.widget.Toast
import de.jrpie.android.launcher.actions.Action
import de.jrpie.android.launcher.actions.Gesture
import de.jrpie.android.launcher.apps.AppInfo
@@ -83,14 +85,18 @@ fun getPrivateSpaceUser(context: Context): UserHandle? {
val userManager = context.getSystemService(Context.USER_SERVICE) as UserManager
val launcherApps = context.getSystemService(Context.LAUNCHER_APPS_SERVICE) as LauncherApps
return userManager.userProfiles.firstOrNull { u ->
- launcherApps.getLauncherUserInfo(u)?.userType == UserManager.USER_TYPE_PROFILE_PRIVATE
+ launcherApps.getLauncherUserInfo(u)?.userType == UserManager.USER_TYPE_PROFILE_PRIVATE
}
}
fun openInBrowser(url: String, context: Context) {
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
intent.putExtras(Bundle().apply { putBoolean("new_window", true) })
- context.startActivity(intent)
+ try {
+ context.startActivity(intent)
+ } catch (_: ActivityNotFoundException) {
+ Toast.makeText(context, R.string.toast_activity_not_found_browser, Toast.LENGTH_LONG).show()
+ }
}
fun openTutorial(context: Context) {
diff --git a/app/src/main/java/de/jrpie/android/launcher/actions/AppAction.kt b/app/src/main/java/de/jrpie/android/launcher/actions/AppAction.kt
index 2bb3780..4b71a90 100644
--- a/app/src/main/java/de/jrpie/android/launcher/actions/AppAction.kt
+++ b/app/src/main/java/de/jrpie/android/launcher/actions/AppAction.kt
@@ -2,6 +2,7 @@ package de.jrpie.android.launcher.actions
import android.app.AlertDialog
import android.app.Service
+import android.content.ActivityNotFoundException
import android.content.Context
import android.content.Intent
import android.content.pm.LauncherApps
@@ -34,7 +35,11 @@ class AppAction(val app: AppInfo) : Action {
context.packageManager.getLaunchIntentForPackage(packageName)?.let {
it.addCategory(Intent.CATEGORY_LAUNCHER)
- context.startActivity(it)
+ try {
+ context.startActivity(it)
+ } catch (_: ActivityNotFoundException) {
+ return false
+ }
return true
}
diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/list/apps/ListFragmentApps.kt b/app/src/main/java/de/jrpie/android/launcher/ui/list/apps/ListFragmentApps.kt
index 55f07a5..c52f951 100644
--- a/app/src/main/java/de/jrpie/android/launcher/ui/list/apps/ListFragmentApps.kt
+++ b/app/src/main/java/de/jrpie/android/launcher/ui/list/apps/ListFragmentApps.kt
@@ -1,11 +1,13 @@
package de.jrpie.android.launcher.ui.list.apps
+import android.content.ActivityNotFoundException
import android.content.Intent
import android.content.SharedPreferences
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.Toast
import androidx.fragment.app.Fragment
import de.jrpie.android.launcher.R
import de.jrpie.android.launcher.apps.AppFilter
@@ -91,7 +93,16 @@ class ListFragmentApps : Fragment(), UIObject {
if (LauncherPreferences.functionality().searchWeb()) {
val i = Intent(Intent.ACTION_WEB_SEARCH).putExtra("query", query)
- activity?.startActivity(i)
+ try {
+ activity?.startActivity(i)
+ } catch (_: ActivityNotFoundException) {
+ Toast.makeText(
+ requireContext(),
+ R.string.toast_activity_not_found_search_web,
+ Toast.LENGTH_LONG
+ ).show()
+ }
+
} else {
appsRecyclerAdapter.selectItem(0)
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 0910170..a2e0c37 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -328,5 +328,7 @@
Cancel
Open Source Licenses
Open Source Licenses
+ No app found to handle search.
+ Can\'t open URL: no browser found.