电话号码无法在某些设备上自动链接

问题描述

我正在尝试将电话号码链接为Android上的链接,但是出于某种原因,其中一名测试人员看到了一个问题,即电话号码不是两个不同设备上的链接,而另一个测试人员和开发人员却看不到问题。可能是某种禁用链接的设备配置吗?这是我的代码

textView.AutoLinkMask = Android.Text.Util.MatchOptions.PhoneNumbers;

一个人的Samsung S9 Plus和S20(均为Android 10)的结果:

No Link

在两种不同的人机上的结果,一种在三星S10上进行了测试,另一种在Note 9(均为Android 10)上进行了测试:

Phone Link

我还尝试了Samsung S9 Plus和S20 模拟器,并且效果很好。这使我认为它与那些特定设备有关,也许与某些设置有关?

解决方法

如果我使用没有SIM卡的设备,则会遇到相同的问题,因此请确保您的手机已插入SIM卡。

 private static void gatherTelLinks(ArrayList<LinkSpec> links,Spannable s,@Nullable Context context) {
    PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
    final TelephonyManager tm = (context == null)
            ? TelephonyManager.getDefault()
            : TelephonyManager.from(context);
    Iterable<PhoneNumberMatch> matches = phoneUtil.findNumbers(s.toString(),tm.getSimCountryIso().toUpperCase(Locale.US),Leniency.POSSIBLE,Long.MAX_VALUE);
    for (PhoneNumberMatch match : matches) {
        LinkSpec spec = new LinkSpec();
        spec.url = "tel:" + PhoneNumberUtils.normalizeNumber(match.rawString());
        spec.start = match.start();
        spec.end = match.end();
        links.add(spec);
    }
}

phoneUtil.findNumbers函数在getSimCountryIso()中传递,如果设备没有SIM卡,则此方法可能有问题。

您可以查看的同一线程:

android:autoLink for phone numbers doesn't always work