android 先10位匹配,若是无法匹配,则换成7位匹配

若是一些海外需求,对于号码匹配位数,需要先10位匹配,若是无法匹配,则换成7位匹配

具体情况举例:

Case 1:

如果您保存的有:A:04165191666, B:5191666,  来电号码是:04165191666

因为是7位匹配,所以A和B都可以匹配到,但是最佳匹配还是A,最后显示A;

来电5191666则匹配到B。

Case 2:

仅保存 A:04165191666,

来电5191666或者04165191666则都匹配A。

Case 3:

仅保存 B:5191666,

来电5191666或者04165191666则都匹配B。

可以在7匹配的基础上,将符合条件的号码匹配做进一步筛选即可。

首先,需要将MIN_MATCH修改为7位匹配,请修改以下两只文件,保证return MIN_MATCH都是7

1、PhoneNumberUtils.java中的MIN_MATCH;

2、OldPhoneNumberUtils.cpp中的MIN_MATCH;

另外,请修改DialerSearchUtils.java (alps\packages\providers\contactsprovider\src\com\android\providers\contacts)中的

public static Cursor findNumberExactMatchedCursor(Cursor cursor, String normalizedNumber)方法

这里说明一下:

这个方法是在号码匹配的基础上,再进一步过滤精确号码并返回

输入参数:

cursor是所有经过7位匹配后返回数据,后续会从这里面再做精确匹配

normalizedNumber是call/mms所使用的号码

输出:

若是返回已经匹配上,则

MatrixCursor exactCursor = matrixCursorFromCursorRow(cursor, cursor.getPosition());

cursor.close();

return exactCursor;

若是没有匹配上,则

return null;

另外两个号码,说明一下:

normalizedNumber是call/mms所使用的号码

data1是数据库中找出来的完整号码

可以在这个函数中做客制化满足要求。

时间: 2024-10-07 02:36:26

android 先10位匹配,若是无法匹配,则换成7位匹配的相关文章

android 电话薄先10位匹配,若是无法匹配,则换成7位匹配

案例 1: 如果您保存的有:A:04165191666, B:5191666,  来电号码是:04165191666 因为是7位匹配,所以A和B都可以匹配到,但是最佳匹配还是A,最后显示A: 来电5191666则匹配到B. 案例 2: 仅保存 A:04165191666, 来电5191666或者04165191666则都匹配A. 案例 3: 仅保存 B:5191666, 来电5191666或者04165191666则都匹配B. 可以在7匹配的基础上,将符合条件的号码匹配做进一步筛选即可. 首先,

Android基础-10

Android基础-10 多媒体编程 图片.音乐.视频等: 多媒体:多种综合: 01_计算机表示图形的形式 .jpg 36.4 KB 255*340像素,位深度24. jpg这种工业图形的压缩算法,类似rar,把人言无法识别的颜色值压缩掉了,会使用相邻空间内的颜色表示同一种颜色.文件体积变小,失真. .png 203 KB 255*340像素,位深度32. png这种工业图形的压缩算法,使用类似map的数据结构来存储图形的数据.图片体积变小,不会失真. .bmp 255 KB 255*340像素

//随机生成 10到20条数据 数据包含 用户名(5-10位的字母) 性别 年龄(1-100岁)

//随机生成 10到20条数据 数据包含 用户名(5-10位的字母) 性别 年龄(1-100岁)/*生成随机数的方法*/function random(min, max) { if (min < 0 || max < 0) { console.log("请输入大于0的数据"); return false } if (max == null) {//判断如果只传入一个参数 var max = min;//将参数设置为最大值 min = 0;//将最小值设置为零 } retur

Android技术10:Java与C语言之间简单数据的传递

由于C语言和Java语言之间很多类型不一致性,因此使用native时,需要数据类型转换.下面演示分别传递整型,字符串,整型数组,Java静态方法传递数据. 1.创建native方法 我们单独创建一个NativeClass类来存放native方法 1 package com.forsta.ndk; 2 3 public class NativeClass { 4 public native int add(int x,int y); 5 public native String showStrin

Android Exception 10((server)&#39; ~ Channel is unrecoverably broken and will be disposed!)

08-11 19:22:35.028: W/MemoryDealer(2123): madvise(0x43e16000, 12288, MADV_REMOVE) returned Operation not supported on transport endpoint 08-11 19:22:35.038: W/InputDispatcher(2714): channel '4236b890 com.tongyan.activity/com.tongyan.activity.SettingA

【Android】cocos2d-x-3.1.1环境搭建与创建工程( Win7 32位系统)

参考资料: http://blog.csdn.net/wxc237786026/article/details/32907079 1.环境搭建 2.创建工程 2.1 VS2012运行 2.2 Android实体机运行 1.环境搭建 安装工具: 1.1.JDK 1.2.Android SDK 1.3.Android NDK 1.4.apache-ant 1.5.Python 1.6   coco2d-x-3.1.1 1.1.JDK安装与配置 参考:http://jingyan.baidu.com/

not(expr|ele|fn)从匹配元素的集合中删除与指定表达式匹配的元素

not(expr|ele|fn) 概述 从匹配元素的集合中删除与指定表达式匹配的元素 参数 exprStringV1.0 一个选择器字符串.深圳dd马达 elementDOMElementV1.0 一个DOM元素 function(index)FunctionV1.4 一个用来检查集合中每个元素的函数.this是当前的元素. 示例 描述: 从p元素中删除带有 select 的ID的元素 HTML 代码: <p>Hello</p><p id="selected&quo

把一串数字表示成千位分隔形式——JS正则表达式的应用

梳理思路 要先明白的是,我们将要转换成的数字格式是这样:从个位往左数起,每三位前插入一个千位分隔符,,即可以想象成我们要把每三位数字前面的那个空""匹配出来,并替换成千位分隔符,.每个千位分隔符后面的数字个数是3个或3的倍数个. 代码书写 创建一个正则表达式字面量,并加上全局匹配修饰符g.var reg = //g; W3C对全局匹配的解释是:查找所有匹配而非在找到第一个匹配后停止. 因为需要从右往左匹配,所以表示结尾的$是必须要有的.三位数字用\d{3}来表示,由于我们不知道究竟有多

超10名房企老板受累官员落马 地产成了高危行业

超10名房企老板受累官员落马 地产成了高危行业 行业动态华夏时报[微博]刘力图 陈小瑛2014-11-13 00:16 我要分享 7 [摘要]卷入反腐风暴的房企决不止协信一家.反腐持续发酵,不仅令一些房企老板出逃境外,一些高管也担心受牵连而离开该行业. 协信集团董事长吴旭终于有望回到公司,因卷入华润宋林案,吴旭已协助调查近半年时间.其间,协信为套现自救,出售了上海5栋写字楼. 实际上,卷入反腐风暴的房企决不止协信一家.<华夏时报>记者粗略统计,在广东.湖北.重庆.四川.云南等地,仅今年被公开曝