From 7bf7a81e25579f6ab4801d33c0bf1be9cc4fdeb5 Mon Sep 17 00:00:00 2001 From: NatsuCamellia Date: Sun, 23 Aug 2026 17:43:47 +0800 Subject: [PATCH 1/2] fix: reset package name in intent on open link error --- .../java/me/ash/reader/infrastructure/compose/UriHandler.kt | 2 +- app/src/main/java/me/ash/reader/ui/ext/ContextExt.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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..5fcf177cf 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 @@ -105,7 +105,7 @@ internal class AppUriHandler( } } catch (_: Throwable) { showToast(getString(R.string.open_link_something_wrong)) - startActivity(intent) + startActivity(intent.setPackage(null)) } } } 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..c76441009 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 @@ -148,7 +148,7 @@ fun Context.openURL( } } catch (_: Throwable) { showToast(getString(R.string.open_link_something_wrong)) - startActivity(intent) + startActivity(intent.setPackage(null)) } } } From ff9f73675c8df452f84b771d7734d57f65fd22f0 Mon Sep 17 00:00:00 2001 From: NatsuCamellia Date: Fri, 16 Oct 2026 21:17:36 +0800 Subject: [PATCH 2/2] fix: show a toast instead of crashing when no app can open a link --- .../me/ash/reader/infrastructure/compose/UriHandler.kt | 9 +++++++-- app/src/main/java/me/ash/reader/ui/ext/ContextExt.kt | 9 +++++++-- app/src/main/res/values/strings.xml | 1 + 3 files changed, 15 insertions(+), 4 deletions(-) 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 5fcf177cf..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.setPackage(null)) + 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 c76441009..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.setPackage(null)) + 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