From bc16061939faac46fae06d72bd02af915c7b78ee Mon Sep 17 00:00:00 2001
From: Mihai Adrian <48995920+mcarare@users.noreply.github.com>
Date: Thu, 12 Sep 2019 19:26:24 +0300
Subject: [PATCH] For #3371: Show snackbar message when share fails with crash
(#5210)
---
.../org/mozilla/fenix/share/ShareController.kt | 14 +++++++++++++-
app/src/main/res/values/strings.xml | 2 ++
2 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/app/src/main/java/org/mozilla/fenix/share/ShareController.kt b/app/src/main/java/org/mozilla/fenix/share/ShareController.kt
index 9e293bbbe..8c9b40b36 100644
--- a/app/src/main/java/org/mozilla/fenix/share/ShareController.kt
+++ b/app/src/main/java/org/mozilla/fenix/share/ShareController.kt
@@ -13,11 +13,14 @@ import androidx.annotation.VisibleForTesting
import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.Fragment
import androidx.navigation.NavController
+import com.google.android.material.snackbar.Snackbar
import mozilla.components.concept.sync.Device
import mozilla.components.concept.sync.TabData
import mozilla.components.feature.sendtab.SendTabUseCases
import org.mozilla.fenix.R
+import org.mozilla.fenix.components.FenixSnackbar
import org.mozilla.fenix.components.metrics.Event
+import org.mozilla.fenix.ext.getRootView
import org.mozilla.fenix.ext.metrics
import org.mozilla.fenix.ext.nav
import org.mozilla.fenix.share.listadapters.AppShareOption
@@ -71,7 +74,16 @@ class DefaultShareController(
flags = FLAG_ACTIVITY_NEW_TASK
setClassName(app.packageName, app.activityName)
}
- fragment.startActivity(intent)
+
+ try {
+ fragment.startActivity(intent)
+ } catch (e: SecurityException) {
+ context.getRootView()?.let {
+ FenixSnackbar.make(it, Snackbar.LENGTH_LONG)
+ .setText(context.getString(R.string.share_error_snackbar))
+ .show()
+ }
+ }
dismiss()
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 3cf37f4a2..1aa42ac25 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -593,6 +593,8 @@
To send a tab, sign in to Firefox on at least one other device.
Got it
+
+ Cannot share to this app