欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android编程中号码匹配位数修改的方法

程序员文章站 2023-12-02 17:37:22
本文实例讲述了android编程中号码匹配位数修改的方法。分享给大家供大家参考,具体如下: android2.1上默认的号码匹配位数是7位,也就是说从右向左算起,如果两个...

本文实例讲述了android编程中号码匹配位数修改的方法。分享给大家供大家参考,具体如下:

android2.1上默认的号码匹配位数是7位,也就是说从右向左算起,如果两个号码有7位是匹配的,那么就认为是相同的号码,如+86 1234567和01234567是相同的号码;所以判断两个号码是否匹配,简单的用”==”是不行的。

安卓在sqlite层新增了函数phone_numbers_equal用于号码匹配的判断,这个函数是数据库级的,对应的sql语句是phone_numbers_equal,android将该函数以2个参数和3个参数的形式注册到sqlite数据库里,2个参数的情况无非就是号码a和号码b,3个参数则多了一个bool变量,用来指示是否使用严格匹配,这个严格匹配是专门给泰国用的,看来泰国的号码规则比较特别,而在我们国家,这个变量一般情况下都是0了。

进入正题,修改android的号码匹配位数,其实很简单,修改oldphonenumberutils.cpp文件中的最小匹配位数为想要的数字即可,该数字在函数phone_number_compare_loose函数中使用,这个函数其实就是号码匹配的真正函数,文件位置:external\sqlite\android

static int min_match = 7; 
//修改成你想要的数字

在framwork层还有个一样的java函数实现,compareloosely(a,b),framewoeks\base\telephony\java\android\telephony\phonenumberutils.java,其中使用到的min_match同样需要修改。

【注】:2.1上 phone_number_compare_loose 和 compareloosely函数的实现里面少了几句代码,算是bug吧,会影响英文状态下6位长度的号码的匹配

希望本文所述对大家android程序设计有所帮助。