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