How can I get clickable hyperlinks in AlertDialog from a string resource?
I didn't really like the currently most popular answer because it significantly changes the formatting of the message in the dialog.
Here's a solution that will linkify your dialog text without otherwise changing the text styling:
// Linkify the message final SpannableString s = new SpannableString(msg); // msg should have url to enable clicking Linkify.addLinks(s, Linkify.ALL); final AlertDialog d = new AlertDialog.Builder(activity) .setPositiveButton(android.R.string.ok, null) .setIcon(R.drawable.icon) .setMessage( s ) .create(); d.show(); // Make the textview clickable. Must be called after show() ((TextView)d.findViewById(android.R.id.message)).setMovementMethod(LinkMovementMethod.getInstance());
If you are only showing some text and URL[s] in your dialog perhaps the solution is simpler
public static class MyOtherAlertDialog { public static AlertDialog create(Context context) { final TextView message = new TextView(context); // i.e.: R.string.dialog_message => // "Test this dialog following the link to dtmilano.blogspot.com" final SpannableString s = new SpannableString(context.getText(R.string.dialog_message)); Linkify.addLinks(s, Linkify.WEB_URLS); message.setText(s); message.setMovementMethod(LinkMovementMethod.getInstance()); return new AlertDialog.Builder(context) .setTitle(R.string.dialog_title) .setCancelable(true) .setIcon(android.R.drawable.ic_dialog_info) .setPositiveButton(R.string.dialog_action_dismiss, null) .setView(message) .create(); }}
As shown herehttp://picasaweb.google.com/lh/photo/up29wTQeK_zuz-LLvre9wQ?feat=directlink
This should make <a href>
tags to get highlighted as well. Please note that i have just added a few lines to emmby's code. so credit to him
final AlertDialog d = new AlertDialog.Builder(this) .setPositiveButton(android.R.string.ok, null) .setIcon(R.drawable.icon) .setMessage(Html.fromHtml("<a href=\"http://www.google.com\">Check this link out</a>")) .create();d.show();// Make the textview clickable. Must be called after show() ((TextView)d.findViewById(android.R.id.message)).setMovementMethod(LinkMovementMethod.getInstance());