KK版本上部分号码不能识别成链接的问题

英语下 信息内容中的号码不能识别(如10086)中文下可以识别10086

 

關於這個現象是google對於數字的判斷考慮到了國家的屬性
 在Linkify.java中對於電話號碼的識別方法 MR2/KK 後已經由原本單純的

public static final Pattern PHONE
         = Pattern.compile(                      // sdd = space, dot, or dash
                 "(\\+[0-9]+[\\- \\.]*)?"        // +<digits><sdd>*
                 + "(\\([0-9]+\\)[\\- \\.]*)?"   // (<digits>)<sdd>*
                 + "([0-9][0-9\\- \\.]+[0-9])"); // <digit><digit|sdd>+<digit>

改成用

Iterable<PhoneNumberMatch> matches = phoneUtil.findNumbers(s.toString(),
                 Locale.getDefault().getCountry(), Leniency.POSSIBLE, Long.MAX_VALUE);

所以判斷變得更加嚴謹,如10086在簡體中文下可以識別,但在英文就無法識別
 但如果都是亂打的如12345則是無法識別。

 

如果客户一定要修改成号码在任何语言下都能识别,唯一的辦法就是把判斷電話號碼的CODE恢復為4.4之前(不要根據國家判斷)

把 Linkify.java 中的 addLinks() 中的這段

if ((mask & PHONE_NUMBERS) != 0) {
             gatherTelLinks(links, text);
         }

改為

if ((mask & PHONE_NUMBERS) != 0) {
             gatherLinks(links, text, Patterns.PHONE,
                 new String[] { "tel:" },
                 sPhoneNumberMatchFilter, sPhoneNumberTransformFilter);
         }

这样修改只是號碼的判斷不分國家了

不過若不修改個話 雖然有問題 但至少所有的行為會和androdi 4.4 一樣

所以还请客户自行考量。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值