ContentProvider 读取系统联系人
2016-07-11 21:44
549 查看
数据库中重要的几张表
1、contacts表
该表保存了所有的手机测联系人,每个联系人占一行,该表保存了联系人的
ContactID、联系次数、最后一次联系的时间、是否含有号码、是否被添加
到收藏夹等信息。
2、raw_contacts表
该表保存了所有创建过的手机测联系人,每个联系人占一行,表里有一列标
识该联系人是否被删除,该表保存了两个ID:RawContactID和ContactID,
从而将contacts表和raw_contacts表联系起来。该表保存了联系人的
RawContactID、ContactID、联系次数、最后一次联系的时间、是否被添
加到收藏夹、显示的名字、用于排序的汉语拼音等信息。
3、 mimetypes
该表定义了所有的MimeTypeID,即联系人的各个字段的唯一标志。
4、data表
该表保存了所有创建过的手机测联系人的所有信息,每个字段占一行 ,该表
保存了两个ID:MimeTypeID和RawContactID,从而将data表和
raw_contacts表联系起来。
联系人的所有信息保存在列data1至data15中,各列中保存的内容根据
MimeTypeID的不同而不同。如保存号码(MimeTypeID=5)的那行数据中,
data1列保存号码,data2列保存号码类型(手机号码/家庭号码/工作号码等)。
若果要获取联系的数据,该怎么做?
1 获取所有的联系人的id
2 根据id查询到这个连续人所有的信息
要插入联系人需要如下的步骤:
1、先去 raw_contacts 表中添加 id;
2、然后借助 id 去 data 表中添加各种信息。
1、contacts表
该表保存了所有的手机测联系人,每个联系人占一行,该表保存了联系人的
ContactID、联系次数、最后一次联系的时间、是否含有号码、是否被添加
到收藏夹等信息。
2、raw_contacts表
该表保存了所有创建过的手机测联系人,每个联系人占一行,表里有一列标
识该联系人是否被删除,该表保存了两个ID:RawContactID和ContactID,
从而将contacts表和raw_contacts表联系起来。该表保存了联系人的
RawContactID、ContactID、联系次数、最后一次联系的时间、是否被添
加到收藏夹、显示的名字、用于排序的汉语拼音等信息。
3、 mimetypes
该表定义了所有的MimeTypeID,即联系人的各个字段的唯一标志。
4、data表
该表保存了所有创建过的手机测联系人的所有信息,每个字段占一行 ,该表
保存了两个ID:MimeTypeID和RawContactID,从而将data表和
raw_contacts表联系起来。
联系人的所有信息保存在列data1至data15中,各列中保存的内容根据
MimeTypeID的不同而不同。如保存号码(MimeTypeID=5)的那行数据中,
data1列保存号码,data2列保存号码类型(手机号码/家庭号码/工作号码等)。
若果要获取联系的数据,该怎么做?
1 获取所有的联系人的id
2 根据id查询到这个连续人所有的信息
private Button getContacts; private Button btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getContacts = (Button) findViewById(R.id.getContacts); getContacts.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //在这里进行联系人的获取 ContentResolver cr = getContentResolver(); //1 获取所有联系人的id Cursor cursorID = cr.query(Uri.parse("content://com.android.contacts/raw_contacts"),new String[]{"contact_id"},null,null,null); if (cursorID.getCount() ==0){ Toast.makeText(MainActivity.this,"没有联系人",Toast.LENGTH_SHORT).show(); return; } //2根据id获取到每一个联系人的所有的信息 while (cursorID.moveToNext()){ //拿到id的字符串 String contactid = cursorID.getString(cursorID.getColumnIndex("contact_id")); //根据id去data数据库里面查询联系人的所有信息 Cursor contactData = cr.query(Uri.parse("content://com.android.contacts/data"),new String[]{"data1","mimetype"},"raw_contact_id=?",new String[]{contactid},null); //便利获取联系人的信息 while(contactData.moveToNext()){ //拿到数据内容 String data1 = contactData.getString(contactData.getColumnIndex("data1")); //拿到数据类型 String mimeType = contactData.getString(contactData.getColumnIndex("mimetype")); if("vnd.android.cursor.item/email_v2".equals(mimeType)){ Log.i("邮箱",data1); }else if ("vnd.android.cursor.item/phone_v2".equals(mimeType)){ Log.i("手机:",data1); }else if ("vnd.android.cursor.item/name".equals(mimeType)){ Log.i("名字",data1); } } //关闭游标对象,释放内存 contactData.close(); } //关闭游标对象,释放内存 cursorID.close(); //3 添加权限,允许读取ContentProvider } });
要插入联系人需要如下的步骤:
1、先去 raw_contacts 表中添加 id;
2、然后借助 id 去 data 表中添加各种信息。
相关文章推荐
- 高处胜寒 php中奖概率算法,可用于刮刮卡,大转盘等抽奖算法
- laravel5模型、控制器、视图基本操作
- laravel5——神奇的IoC容器
- 以获取和添加联系人为例学习调用系统ContentPrivider
- thinkphp项目 出现 Internal Server Error 错误原因分析
- PHP开发环境软件安装
- PHP的压力测试工具ab.exe 和mpm介绍提高并发数
- php基础复习一语法基础
- ThinkPHP框架表单验证
- PHP Mail() 函数最终解决办法
- php必备技能 转载
- ThinkPHP中initialize和construct的不同
- Open Flash Chart在php中的使用教程
- yii2 验证码的使用
- php定界符<<<EOF讲解
- 分享一个PHP调用RestFul接口的函数
- php 读取和下载execl
- php 实现猴子选大王递归算法
- PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep
- thinkPHP学习_第一天