您的位置:首页 > 编程语言 > PHP开发

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查询到这个连续人所有的信息

     

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 表中添加各种信息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: