Android CTA认证电话号码7位就能错误匹配问题

电话号码匹配问题

Android默认的号码匹配位数是7位,也就是说从右向左算起,如果两个号码有7位是匹配的,那么就认为是相同的号码,如+86 1234567和01234567是相同的号码;所以判断两个号码是否匹配。
这个会导致过不了认证。

复现

1.测试机新建电话簿联系人jack:12345678(号码长度不足11位, 只保留后8位,前3位去掉);
2. 配合测试机号码为13x12345678(后8位要与上面建立的联系人一样),拨打测试机;
3. 测试机本应识别此号码为未知联系人新号码,但测试过程却被识别为jack,导致测试失败。

修改

在/frameworks/base/telephony/java/android/telephony/PhoneNumberUtils.java里面有个 MIN_MATCH 成员变量,可以用来控制min match, 这里可以改成11。

frameworks$ git diff
diff --git a/base/telephony/java/android/telephony/PhoneNumberUtils.java b/base/telephony/java/android/telephony/PhoneNumberUtils.java
index fababe34..833659de 100755
--- a/base/telephony/java/android/telephony/PhoneNumberUtils.java
+++ b/base/telephony/java/android/telephony/PhoneNumberUtils.java
@@ -1632,7 +1632,7 @@ public class PhoneNumberUtils
     //
     // However, in order to loose match 650-555-1212 and 555-1212, we need to set the min match
     // to 7.
-    static final int MIN_MATCH = 7;
+    static final int MIN_MATCH = 11;

作者:帅得不敢出门 谢绝转载

猜你喜欢

转载自blog.csdn.net/zmlovelx/article/details/129219578