12

I have the link in my TextView:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    ...

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:autoLink="all"
        android:linksClickable="true"
        android:text="@string/app_description" />
</RelativeLayout>

The link is a part of the resources:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    ...
    <string name="app_description">Some text with the <a href="http://www.example.com">link</a>.</string>
</resources>

Somehow the link doesn't work. What could be a reason? It is displayed like a link. But click doesn't open the browser.

Class code:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
LA_
  • 19,823
  • 58
  • 172
  • 308

4 Answers4

14

you can use http link this way:

   mLink = (TextView) findViewById(R.id.link);
      if (mLink != null) {
        mLink.setMovementMethod(LinkMovementMethod.getInstance());
     }

In XML:

android:autoLink="all"
Pratik Butani
  • 60,504
  • 58
  • 273
  • 437
Shivang Trivedi
  • 2,182
  • 1
  • 20
  • 26
9

Important, if you are using:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    textView.setText(Html.fromHtml("<a href=https://www.google.com/>Click</a>", Html.FROM_HTML_MODE_LEGACY));
} else {
    textView.setText(Html.fromHtml("<a href=https://www.google.com/>Click</a>"));
}
textView.setClickable(true);
textView.setMovementMethod(LinkMovementMethod.getInstance());

Do not set android:autoLink="all" or android:autoLink="web" in the xml, because with that it doesn't work!

walkmn
  • 2,322
  • 22
  • 29
1

TextView yourTextView = (TextView) findViewById(R.id.yourTextViewId );

    yourTextView.setMovementMethod(LinkMovementMethod.getInstance());
    Spannable spans = (Spannable) yourTextView.getText();

    ClickableSpan clickSpan = new ClickableSpan() {

        @Override
        public void onClick(View v) {
            switch (v.getId()) {

            case R.id.yourTextViewId :
                Intent localIntent = new Intent();
                localIntent.setAction("android.intent.action.VIEW");
                localIntent.setData(Uri.parse("YOUR LINK"));
                startActivity(localIntent);
                break;
            }

        }
    };
    spans.setSpan(clickSpan, 0, spans.length(),
            Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
AshMv
  • 392
  • 2
  • 12
-1

enter image description here

Following code is working for me.

String html2 = "<br><br>Fire - <b><a href=http://www.google.com>google</a> </b></br></br>";
        text.append(Html.fromHtml(html2));
        text.setMovementMethod(LinkMovementMethod.getInstance());
Hardik Joshi
  • 9,477
  • 12
  • 61
  • 113