From dd952a90ade33e77b30959abf9d71c80b9702ba7 Mon Sep 17 00:00:00 2001 From: agnostic-apollo Date: Mon, 6 Sep 2021 04:40:49 +0500 Subject: [PATCH] Changed: Show system chooser if failed to find activity to handle url --- .../com/termux/shared/interact/ShareUtils.java | 14 ++++++++++---- termux-shared/src/main/res/values/strings.xml | 1 + 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/termux-shared/src/main/java/com/termux/shared/interact/ShareUtils.java b/termux-shared/src/main/java/com/termux/shared/interact/ShareUtils.java index c16149551d..cb5aa11d6d 100644 --- a/termux-shared/src/main/java/com/termux/shared/interact/ShareUtils.java +++ b/termux-shared/src/main/java/com/termux/shared/interact/ShareUtils.java @@ -14,6 +14,7 @@ import com.termux.shared.R; import com.termux.shared.data.DataUtils; +import com.termux.shared.data.IntentUtils; import com.termux.shared.file.FileUtils; import com.termux.shared.logger.Logger; import com.termux.shared.models.errors.Error; @@ -39,7 +40,11 @@ private static void openSystemAppChooser(final Context context, final Intent int chooserIntent.putExtra(Intent.EXTRA_INTENT, intent); chooserIntent.putExtra(Intent.EXTRA_TITLE, title); chooserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - context.startActivity(chooserIntent); + try { + context.startActivity(chooserIntent); + } catch (Exception e) { + Logger.logStackTraceWithMessage(LOG_TAG, "Failed to open system chooser for:\n" + IntentUtils.getIntentString(chooserIntent), e); + } } /** @@ -88,12 +93,13 @@ public static void copyTextToClipboard(final Context context, final String text, */ public static void openURL(final Context context, final String url) { if (context == null || url == null || url.isEmpty()) return; + Uri uri = Uri.parse(url); + Intent intent = new Intent(Intent.ACTION_VIEW, uri); try { - Uri uri = Uri.parse(url); - Intent intent = new Intent(Intent.ACTION_VIEW, uri); context.startActivity(intent); } catch (Exception e) { - Logger.logStackTraceWithMessage(LOG_TAG, "Failed to open the url \"" + url + "\"", e); + // If no activity found to handle intent, show system chooser + openSystemAppChooser(context, intent, context.getString(R.string.title_open_url_with)); } } diff --git a/termux-shared/src/main/res/values/strings.xml b/termux-shared/src/main/res/values/strings.xml index c79d04c19a..3f586c7677 100644 --- a/termux-shared/src/main/res/values/strings.xml +++ b/termux-shared/src/main/res/values/strings.xml @@ -43,6 +43,7 @@ Share With + Open URL With The storage permission not granted." The %1$s file saved successfully at \"%2$s\""