获取Android系统的联系人信息
2015-08-08 19:24
399 查看
1.先添加2条联系人(因虚拟机里的联系人为空)
2.导出联系人的数据库(data/data/)
3.查看系统的联系人数据库主要3张表,得出它们关系如图:
4.ContactsProvider在AndroidManifest.xml的配置如图
下面进行代码实现:
1.新建读取联系人信息的应用
2.通过系统的ContentProvider提供ContentResolver获取(因系统的数据库为私有)
3.系统Contact Matcher:路径与表建立映射关系
路径/raw_contacts对应raw_contacts表
路径/data对应data表
4.添加权限
5.结果如图
PS:内部查询的时候并不是直接查询data表,而是查询data与mimetypes生成的view_data
2.导出联系人的数据库(data/data/)
3.查看系统的联系人数据库主要3张表,得出它们关系如图:
4.ContactsProvider在AndroidManifest.xml的配置如图
下面进行代码实现:
<span style="font-size:12px;">package com.example.contactdb; import android.app.Activity; import android.content.ContentResolver; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.view.View; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void contactdata(View view) { ContentResolver cr = getContentResolver(); Uri contactUri = Uri .parse("content://com.android.contacts/raw_contacts"); Uri dataUri = Uri.parse("content://com.android.contacts/data"); Cursor contactcursor = cr.query(contactUri, null, null, null, null); while (contactcursor.moveToNext()) { String id = contactcursor.getString(contactcursor .getColumnIndex("contact_id")); System.out.println("id---" + id); Cursor datacursor = cr.query(dataUri, null, "contact_id=?", new String[] { id }, null); // 小技巧:测试data表的结果集,可知并没有mimetype_id字段只有mimetype字段 // String[] strname = datacursor.getColumnNames(); // for (int i = 0; i < strname.length; i++) { // System.out.println("Names---" + strname[i]); // } while (datacursor.moveToNext()) { String mimetype = datacursor.getString(datacursor .getColumnIndex("mimetype")); String data1 = datacursor.getString(datacursor .getColumnIndex("data1")); System.out.println("data1---" + mimetype); System.out.println("data1---" + data1); } datacursor.close(); } contactcursor.close(); } } </span>
1.新建读取联系人信息的应用
2.通过系统的ContentProvider提供ContentResolver获取(因系统的数据库为私有)
3.系统Contact Matcher:路径与表建立映射关系
路径/raw_contacts对应raw_contacts表
路径/data对应data表
4.添加权限
5.结果如图
PS:内部查询的时候并不是直接查询data表,而是查询data与mimetypes生成的view_data
相关文章推荐
- android 的屏幕适配问题,dp与px的换算
- 【Android开发经验】使用反射,得到的类的字段、方法、并实现了简单的调用
- Android 属性动画(Property Animation) 完全解析 (下)
- 加载大图片到Android内存
- Android学习下拉列表 spinner
- Android笔记(五) Activity的启动模式
- 设定十分钟android在状态栏上集成的开源project推荐
- Android中java反射(Reflection)实战
- Android中那些让你相见恨晚的类-接口-方法
- Android 04:自动化服务—操作存储卡和内存卡中的数据
- Android 注入详解
- Android之WiFi密码破解
- android.graphics.PorterDuff,android.graphics.Insets注释翻译
- Android基础知识杂记
- 安卓实现登陆
- android socket
- android 里的各种通信方式
- android fragment(2)
- hongyang的博文深入理解Android中的自定义属性 学习笔记
- Parcelable接口的使用