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