我想让我的电话号码可以点击,现在我目前的解决方案是:

final SpannableString msg = "Contact us: [email protected] or call: 5008 878 6578"
Linkify.addLinks(msg, Linkify.EMAIL_ADDRESSES | Linkify.PHONE_NUMBERS);
textView.setText(msg);


这适用于 Android 8.1 及以下版本,但不适用于 Android 9(电子邮件可点击,因此问题仅在于电话号码)

我已经尝试过使用 XML 布局或使用
textView.setAutoLinkMask(Linkify.PHONE_NUMBERS)

并且输出相同,电话号码不可点击。

如何在 Android 9 上修复它?

最佳答案

根据 documentation,掩码 Linkify.EMAIL_ADDRESSES | Linkify.PHONE_NUMBERS 似乎是正确的 - 但我不会将类似 5008 878 6578 的东西识别为有效的电话号码 - 如果我点击它,我肯定无法拨打它......所以很可能是 sPhoneNumberMatchFilter 有问题.
使用 Spannable 手动构建所需的 tel://50088786578 可能是一个简单的解决方案;调整 sPhoneNumberMatchFilter 可能是另一个选项...... .addLinks() 也允许这样做,参数 matchFilter

您确定您在 Android 9.0 上使用相同的 Locale 运行吗?这应该是要匹配的正则表达式模式的来源,因为这些格式计入本地化。

10-08 04:35