首页
论坛
课程
招聘
[原创]Android联系人数据库分析及获取联系人方法
2011-7-2 23:50 22133

[原创]Android联系人数据库分析及获取联系人方法

2011-7-2 23:50
22133
第一次发贴,方家见笑。
      查找获取联系人方法时,找到以下代码
Contacts_.rar
可以获取系统中的联系人(2.2系统),但程序处理得不太好,如下图:

      同时代码没有注释,有些地方看不懂,于是自己分析了一下Android系统联系人数据库,写了一份总结,比较长,有28页,就不贴出来了。
    总结如下:

Android联系人总结.pdf
      这是我对系统联系人数据库的分析结果,希望对大家有所帮助,如果有错误之处,烦请指出。
      我将以上代码进行了修改,获取联系人后显示效果如下图:

      以下为修改过的代码:

[注意] 招人!base上海,课程运营、市场多个坑位等你投递!

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (23)
雪    币: 486
活跃值: 活跃值 (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
holmesabc 活跃值 2011-7-3 12:06
2
0
哇,LZ不错啊,分析了这么多。

其实有几点还是要注意一下。
LZ分析的是最原始的最重要的三个表。而android提供的ContentProvider 的那些URI,所用的表并不是直接用这三个原始数据表,而是用的下面的那些对应的view。
比如ContactsContract.Data.CONTENT_URI,它会去查view_data_restricted这个视图。其它的基本一样。
使用时主要就是看那些view了。

还有一个就是注意一下,data表的_id,与raw_contact_id和contact_id这三个id,绝大多数情况,后面两个是一样的值。但这两个值不一定一样。使用这两个ID的时候别搞混就行了。
雪    币: 0
活跃值: 活跃值 (15)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
abcdzyee 活跃值 2011-7-3 20:31
3
0
受教了~
雪    币: 2098
活跃值: 活跃值 (23)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
riijj 活跃值 7 2011-7-3 22:25
4
0
获益良多

想不到可以用 sqlite 工具直接分析, 多谢指导
雪    币: 2098
活跃值: 活跃值 (23)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
riijj 活跃值 7 2011-7-3 22:37
5
0
楼主对 sms 的数据有没有研究 ?

我找了很久, 都没有找到修改方法  (在 1.5 以后便没有方法 )
雪    币: 322
活跃值: 活跃值 (113)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
高军 活跃值 2011-7-3 23:39
6
0
方法不错,收藏了
雪    币: 0
活跃值: 活跃值 (15)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
abcdzyee 活跃值 2011-7-4 00:06
7
0
稍微看了下,方法类似的,都是通过Content Provider进行修改
雪    币: 53
活跃值: 活跃值 (72)
能力值: ( LV9,RANK:270 )
在线值:
发帖
回帖
粉丝
kuang110 活跃值 6 2011-7-4 10:38
8
0
sms数据,看看sms.db
sqlite3格式的,明文的说。
雪    币: 201
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ydfree 活跃值 2011-7-4 17:15
9
0
收益非浅
雪    币: 210
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
dragonzjl 活跃值 2011-7-4 20:06
10
0
感谢LZ的无私分享。
雪    币: 201
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
魔力酷酷狼 活跃值 2011-7-4 20:54
11
0
谢谢分享
雪    币: 8
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wsliangy 活跃值 2011-7-5 00:23
12
0
yi哥v5~~
雪    币: 2098
活跃值: 活跃值 (23)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
riijj 活跃值 7 2011-7-5 10:08
13
0
多谢楼主和 kuang110 的指点, 我有空试一下

上一次我曾经跟网上的例子做, 但失败了  
雪    币: 220
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
广海混沌 活跃值 2011-7-5 14:32
14
0
不错 不错 受益
雪    币: 92
活跃值: 活跃值 (16)
能力值: (RANK:60 )
在线值:
发帖
回帖
粉丝
沙加L 活跃值 1 2011-7-5 20:37
15
0
我是直接把数据库文件从手机里面拷出来,然后用sqlite查看器看的,这样就可以知道每个表,每个字段,通过网上的资料,就知道每个字段是什么意思.
雪    币: 92
活跃值: 活跃值 (16)
能力值: (RANK:60 )
在线值:
发帖
回帖
粉丝
沙加L 活跃值 1 2011-7-5 20:44
16
0
这个我没有弄过。前段时间把SMS表,还有通话记录表,联系人表
都看了一下,先把db文件拷到电脑上面,然后用java把里面的数据读出来。
如果可以的话,是不是可以直接通过sqlite对文件进行修改操作呀?
(可能要去考虑文件的权限的问题)
雪    币: 2098
活跃值: 活跃值 (23)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
riijj 活跃值 7 2011-7-7 09:44
17
0
我需要修改 (写入)

我就是胆心权限问题
雪    币: 839
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lancecrack 活跃值 2011-7-7 11:22
18
0
感谢楼主的分享!
雪    币: 79
活跃值: 活跃值 (40)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
竹君 活跃值 5 2011-7-7 21:34
19
0
不错 学习了 多谢分享
雪    币: 74
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
飞鸿 活跃值 2011-7-7 22:31
20
0
额,对 Android 不懂的人表示压力好大啊!
雪    币: 84
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wlksl 活跃值 2011-8-30 15:42
21
0
谢谢楼主!收藏了!
雪    币: 209
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
KUJIA 活跃值 2011-9-18 10:33
22
0
感谢LZ的无私分享。
雪    币: 202
活跃值: 活跃值 (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Jecelyin 活跃值 2011-10-18 11:15
23
0
我为这个折腾了很久,现在才看到,哈哈
雪    币: 202
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qycat 活跃值 2011-11-16 12:09
24
0
正准备研究这个!谢谢提供资料参考!
游客
登录 | 注册 方可回帖
返回