catch browser not found in OK dialog

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/ui/XmppActivity.java | 41 +++++---
1 file changed, 24 insertions(+), 17 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/ui/XmppActivity.java 🔗

@@ -177,9 +177,11 @@ public abstract class XmppActivity extends ActionBarActivity {
     }
 
     protected void hideToast() {
-        if (mToast != null) {
-            mToast.cancel();
+        final var toast = this.mToast;
+        if (toast == null) {
+            return;
         }
+        toast.cancel();
     }
 
     protected void replaceToast(String msg) {
@@ -261,23 +263,28 @@ public abstract class XmppActivity extends ActionBarActivity {
                             XmppConnectionService.class));
                     finish();
                 });
-        builder.setPositiveButton(getString(R.string.install),
+        builder.setPositiveButton(
+                getString(R.string.install),
                 (dialog, which) -> {
-                    Uri uri = Uri
-                            .parse("market://details?id=org.sufficientlysecure.keychain");
-                    Intent marketIntent = new Intent(Intent.ACTION_VIEW,
-                            uri);
-                    PackageManager manager = getApplicationContext()
-                            .getPackageManager();
-                    List<ResolveInfo> infos = manager
-                            .queryIntentActivities(marketIntent, 0);
-                    if (infos.size() > 0) {
-                        startActivity(marketIntent);
+                    final Uri uri =
+                            Uri.parse("market://details?id=org.sufficientlysecure.keychain");
+                    Intent marketIntent = new Intent(Intent.ACTION_VIEW, uri);
+                    PackageManager manager = getApplicationContext().getPackageManager();
+                    final var infos = manager.queryIntentActivities(marketIntent, 0);
+                    if (infos.isEmpty()) {
+                        final var website = Uri.parse("http://www.openkeychain.org/");
+                        final Intent browserIntent = new Intent(Intent.ACTION_VIEW, website);
+                        try {
+                            startActivity(browserIntent);
+                        } catch (final ActivityNotFoundException e) {
+                            Toast.makeText(
+                                            this,
+                                            R.string.application_found_to_open_website,
+                                            Toast.LENGTH_LONG)
+                                    .show();
+                        }
                     } else {
-                        uri = Uri.parse("http://www.openkeychain.org/");
-                        Intent browserIntent = new Intent(
-                                Intent.ACTION_VIEW, uri);
-                        startActivity(browserIntent);
+                        startActivity(marketIntent);
                     }
                     finish();
                 });