通话记录:data/data/com.android.providers.contacts目录下的contacts2.db数据库文件中的call表
浏览器的上网记录不太清楚,希望能够帮助到你!
android的联系人数据库是一个三层架构,raw_contacts表,contacts表,data表合起来,才能完整的表示一个联系人的所有信息。那为什么不直接设计一张contacts表示所有联系人呢?理由是,联系人的数据是易变的,而且数据种类繁多。打个比方,你可以随意的把两个联系人合并在一起,也可以随意的为一个联系人增加新的信息(如家庭地址,邮件地址,昵称,头像等等),把所有信息合并放在一张表里明显是不可能的。数据库设计时考虑的可扩展,可维护。由于android底层的数据库很复杂,开发者想得到一个联系人的信息时,经常需要访问3-4张的表才能获取到完整数据,这个过程是很复杂很繁琐的。好在开发时你不用关注这些,因为android帮你把这些已经封装好了,你能看到也就是ContactsContract这个类里面抽象好了的映射。事实上,ContactsContract这个类是根据功能进行抽象的,和底层实现完全没有任何关系。他们之间通过某个ContentProvider连系起来,当你请求content://com.android.contacts/contacts这个字段时,会调用ContentProvider,ContentProvider根据你的uri生成查询不同的表的sql语句,然后把查询结果返回给你。
结果表现就是,你在ContactsContract这个类看到某些字段在对应的表里找不到,因为这个字段被放到其他的表里面去了。
首先明了未接信息的数据库的位置在系统/data/data/com.android.providers.telephony/databases/mmssms.db 包下。
希望大家能够结合源码中的
1. Telephony.java (主要讲这些表里有哪些字段)
2. MmsSmsProvider.java (ContentProvider被重写)
3. MmsProvider.java (ContentProvider被重写)
4. SmsProvider.java (ContentProvider被重写)
5. Conversation.java 描述 mmssms数据库的Threads表
前一段时间在开发项目时,遇到这样的需求,要求将 未接短信,未接彩信的信息显示在Widget上。当我们查询mmssms.db数据库时,这其中涉及到以下几张表:
1. threads表
2. 存放短信的表(sms表)
3. 存放彩信的表(pdu表,part表)
4. 存放phone number的表( Canonical_address表)
能否将未接短信,彩信信息直接显示在Widget上,关键是必须要搞清出这4张表之间的表关系。根据我的编码经验,先抛砖引玉地在这里讲解出我的理解…
对于这几张表,我只简单地列出关键字段,省略部分均用(….)代替。
以下的 ”信息” 指代(mms,sms)
具体的内容你可以看看原文啊:http://blog.sina.com.cn/s/blog_74c22b210100r0kn.html
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)