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位长度的号码的匹配;
转载自http://www.cnblogs.com/flyme/archive/2011/07/07/2100017.html
相关推荐
主要介绍了Android编程中号码匹配位数修改的方法,涉及Android编程中参数修改的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
isIDCard15 : 验证身份证号码15位 isIDCard18 : 验证身份证号码18位 isEmail : 验证邮箱 isURL : 验证URL isZh : 验证汉字 isUsername : 验证用户名 isDate : 验证yyyy-MM-dd格式的日期校验,已考虑平闰年 isIP : ...
Android Sqlite正则匹配
android ListView搜索,仿百度搜索自动匹配功能!
一个语音识别模糊匹配的demo,主要工作流程如下: 1,将目标字符集转换为拼音; 2,获取科大讯飞语音识别的结果; 3,将识别结果转换为拼音; 4,在目标拼音集中进行拼音的匹配查找; 5,对于查找不到的,进行易混...
主要为大家详细介绍了Android6.0来电号码与电话薄联系人进行匹配的方法,感兴趣的小伙伴们可以参考一下
Android 获取来电号码和去电号码
android 匹配Text里面的Emoji 和 QQ表情 文章链接:http://blog.csdn.net/yudan505/article/details/53669354
text 显示 emoji 和 qq 表情。
OpenCV4Android学习之图像特征匹配ORB算法简单Demo
Android话题##匹配和点击
基于像素匹配的Android平台身份证号码实时识别.pdf
android 搜索记录两种方式(包括自动匹配),shareprefrence与数据库两种方式
可以修改奇偶校验位的Android 串口通信demo!!!!!!!!!!!!!!!!
匹配项中实现图文混排效果。 很简单的一个例子
android调用系统邮件组件 Intent匹配流程 csdn博客地址
包含本地数据库的android手机号码归属地查询Demo。 用ViewPager+Fragment来实现的。 包含有封装类,用于读取android中assets目录中的数据库文件。
获取短信,从本地数据库或SIM卡匹配发件人的姓名 android获取短信并匹配姓名 android获取短信并匹配姓名
该类集成了文本的取中间文本、正则匹配文本。 文件的保存文本文件、读出文本文件。 代码简洁高效合适新手直接调用