diff --git a/app/src/main/java/me/ash/reader/infrastructure/compose/UriHandler.kt b/app/src/main/java/me/ash/reader/infrastructure/compose/UriHandler.kt index f47e82d32..a2862d59d 100644 --- a/app/src/main/java/me/ash/reader/infrastructure/compose/UriHandler.kt +++ b/app/src/main/java/me/ash/reader/infrastructure/compose/UriHandler.kt @@ -104,8 +104,13 @@ internal class AppUriHandler( } } } catch (_: Throwable) { - showToast(getString(R.string.open_link_something_wrong)) - startActivity(intent) + val fallbackIntent = intent.setPackage(null) + if (fallbackIntent.resolveActivity(packageManager) != null) { + showToast(getString(R.string.open_link_something_wrong)) + startActivity(fallbackIntent) + } else { + showToast(getString(R.string.open_link_no_app_found)) + } } } } diff --git a/app/src/main/java/me/ash/reader/ui/ext/ContextExt.kt b/app/src/main/java/me/ash/reader/ui/ext/ContextExt.kt index 02747b198..180e24f6d 100644 --- a/app/src/main/java/me/ash/reader/ui/ext/ContextExt.kt +++ b/app/src/main/java/me/ash/reader/ui/ext/ContextExt.kt @@ -147,8 +147,13 @@ fun Context.openURL( } } catch (_: Throwable) { - showToast(getString(R.string.open_link_something_wrong)) - startActivity(intent) + val fallbackIntent = intent.setPackage(null) + if (fallbackIntent.resolveActivity(packageManager) != null) { + showToast(getString(R.string.open_link_something_wrong)) + startActivity(fallbackIntent) + } else { + showToast(getString(R.string.open_link_no_app_found)) + } } } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f7f249f63..96037de4d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -300,6 +300,7 @@ Always ask Browser \"Open link\" setting ignored because something went wrong + No app found to open this link Open with… Include additional info Exclude