发新帖

原生拨号盘搜索分析

[复制链接]
3501 0
本帖最后由 13599923119 于 2015-8-24 12:42 编辑

原生拨号盘搜索分析
联系人数据库contacts2.db中的表Search_index用于拨号盘输入数字搜索联系人。
例如诸葛亮,通过Hanzitopinyin.java得到它的拼音zhu ge liang,转换成数字就是
[url=]948 43 54264[/url],再通过处理保存到字段name_digit。
字段name_digit保存如图下
file:///C:/Users/Administrator/AppData/Local/YNote/data/qqD700EBFFDFBC8D66251B1B05A1AB9541/642ac5254cb84829a821c18741484842/lip_image001.png
file:///C:/Users/Administrator/AppData/Local/YNote/data/qqD700EBFFDFBC8D66251B1B05A1AB9541/642ac5254cb84829a821c18741484842/lip_image001.pngfile:///C:/Users/Administrator/AppData/Local/YNote/data/qqD700EBFFDFBC8D66251B1B05A1AB9541/642ac5254cb84829a821c18741484842/lip_image001.png
保存的字段就是把诸葛亮的所有简拼,全拼都保存起来了,如下
诸葛亮9484354264             945   
葛亮    43554264                45
亮       54264                     5
packages\providers\ContactsProvider\src\com\android\providers\contacts\ContactsProvider2部分截图如下
file:///C:/Users/Administrator/AppData/Local/YNote/data/qqD700EBFFDFBC8D66251B1B05A1AB9541/90335f031c1b48f3889d76114f42641a/lip_image002.png
截图中红圈就是根据全屏,简拼,号码来匹配。
结论:原生代码是把联系人名字所有的简拼/全拼对应的数字保存起来,每当拨号盘输入数字,就是搜索数据库,判断输入的数字是否匹配数据库里保存的数字。这种方法匹配出来的联系人,排序没有规则。同时匹配的条件太松,会导致搜索出来的联系人过多,比如只输入一个数字时,含有该数字的所有号码都匹配。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

举报 使用道具

回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表