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位长度的号码的匹配;

转载自http://www.cnblogs.com/flyme/archive/2011/07/07/2100017.html

更多相关文章

  1. C语言函数的递归(上)
  2. Android:Android系统启动(笔记)
  3. Android中getWidth()和getMeasureWidth()的区别探究
  4. android 7.0 加入 android:directBootAware
  5. Android(安卓)ndk开发swig编译jni接口配置文件(二)
  6. Android的JNI_OnLoad简介与应用
  7. Android最简单的基于FFmpeg的例子(四)---以命令行的形式来使用ff
  8. Android逆向之旅—Hook神器Frida使用详解
  9. Android(安卓)SQLite基础

随机推荐

  1. Android(安卓)Studio中设置ButterKnife、
  2. android panellistview 圆角实现代码
  3. Android如何在java代码中设置margin
  4. suse linux android sdk 下载.安装.配置
  5. 安卓巴士Android开发神贴整理
  6. android 状态栏 时间 错误 adb连接
  7. Android(安卓)Studio 初体验
  8. android 自定义attr 详解
  9. Android内存管理、监测剖析
  10. android平台解析epub--epublib