From cab667ef6a406a1c6a77f7b67700138565459775 Mon Sep 17 00:00:00 2001
From: Torsten Grote <t@grobox.de>
Date: Wed, 7 Sep 2016 16:09:16 -0300
Subject: [PATCH] Show all apps that can open links and dismis dialog after
 click

---
 .../android/widget/LinkDialogFragment.java        | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/briar-android/src/org/briarproject/android/widget/LinkDialogFragment.java b/briar-android/src/org/briarproject/android/widget/LinkDialogFragment.java
index 1a6e636eef..ffee887f63 100644
--- a/briar-android/src/org/briarproject/android/widget/LinkDialogFragment.java
+++ b/briar-android/src/org/briarproject/android/widget/LinkDialogFragment.java
@@ -2,6 +2,7 @@ package org.briarproject.android.widget;
 
 
 import android.content.Intent;
+import android.content.pm.PackageManager;
 import android.net.Uri;
 import android.os.Bundle;
 import android.support.v4.app.DialogFragment;
@@ -14,6 +15,7 @@ import android.widget.TextView;
 
 import org.briarproject.R;
 
+import java.util.List;
 
 public class LinkDialogFragment extends DialogFragment {
 
@@ -50,12 +52,21 @@ public class LinkDialogFragment extends DialogFragment {
 		TextView urlView = (TextView) v.findViewById(R.id.urlView);
 		urlView.setText(url);
 
+		// prepare normal intent or intent chooser
+		Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
+		PackageManager packageManager = getContext().getPackageManager();
+		List activities = packageManager.queryIntentActivities(i,
+				PackageManager.MATCH_DEFAULT_ONLY);
+		boolean choice = activities.size() > 1;
+		final Intent intent = choice ? Intent.createChooser(i,
+				getString(R.string.link_warning_open_link)) : i;
+
 		Button openButton = (Button) v.findViewById(R.id.openButton);
 		openButton.setOnClickListener(new OnClickListener() {
 			@Override
 			public void onClick(View v) {
-				Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
-				startActivity(i);
+				startActivity(intent);
+				getDialog().dismiss();
 			}
 		});
 
-- 
GitLab