Android Linkify - 可点击的电话号码

Android Linkify - Clickable telephone numbers

所以我正在尝试添加这样的功能,当您单击 phone 号码时,它会将您带到带有预填充号码的拨号器应用程序。我有以下代码:

mContactDetailsText.setText(phonetextBuilder.toString());
            Pattern pattern = Pattern.compile("[0-9]+\s+[0-9]+");
            Linkify.addLinks(mContactDetailsText, pattern, "tel:");

并且文本当前是 "T. 0123 4567890"

目前的结果就是上面的字符串无法点击。我什至尝试添加以下行,但没有成功:

mContactDetailsText.setAutoLinkMask(0);

任何人有任何想法或可以看到我做错了什么?

谢谢

您需要在 TextView 上设置 onClickListener()。然后他们会响应点击。

自动链接掩码需要包含对 phone 个号码的搜索:

mContactDetailsText.setAutoLinkMask(Linkify.PHONE_NUMBERS);

然后您需要将链接设置为可点击:

mContactDetailsText.setLinksClickable(true);

您可能还需要像这样设置移动方式:

mContactDetailsText.setMovementMethod(LinkMovementMethod.getInstance())

你应该可以用其他答案完成你想要的, 但这肯定会起作用,并且会让您更好地控制文本的显示以及单击数字时会发生什么。

 String text = "T. ";
 StringBuilder stringBuilder = new StringBuilder(text);
 int phoneSpanStart = stringBuilder.length();
 String phoneNumber = "0123 4567890"
 stringBuilder.append(phoneNumber);
 int phoneSpanEnd = stringBuilder.length();

 ClickableSpan clickableSpan = new ClickableSpan() {
            @Override
            public void onClick(View textView) {
                Intent intent = new Intent(Intent.ACTION_DIAL);
                intent.setData(Uri.parse("tel:" + phoneNumber.replace(" ", "")));
                startActivity(intent); 
            }

            public void updateDrawState(TextPaint ds) {// override updateDrawState
                ds.setUnderlineText(false); // set to false to remove underline
                ds.setColor(Color.BLUE);
            }
        };
   SpannableString spannableString = new SpannableString(stringBuilder);
   spannableString.setSpan(clickableSpan, phoneSpanStart, phoneSpanEnd,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

 myTextView.setText(spannableString);
 myTextView.setMovementMethod(LinkMovementMethod.getInstance());