raw_contacts
: 这个表的作用是用来保存联系人的id
contact_id
用来保存联系人的id
data: 作用是保存联系人的数据的. data1里面存放的是数据 raw_contact_id 存的是联系人的id, mimetype_id
mimetypes: 保存数据的类型
需求: 利用内容提供者查询联系人数据库里面的内容了.
1.查询raw_contacts 表 获取所有的联系人的id
2.查询data表 获取联系人的数据的.
3.根据mimetypes数据类型确定这个数据代表的含义.
需求: 插入一条信息到系统的联系人.
1.在raw_contacts表里面生成一条新的联系人的id
2.根据id在 data表里面插入对应的数据.
号簿管家
data: 作用是保存联系人的数据的. data1里面存放的是数据 raw_contact_id 存的是联系人的id, mimetype_id
mimetypes: 保存数据的类型
需求: 利用内容提供者查询联系人数据库里面的内容了.
1.查询raw_contacts 表 获取所有的联系人的id
2.查询data表 获取联系人的数据的.
3.根据mimetypes数据类型确定这个数据代表的含义.
需求: 插入一条信息到系统的联系人.
1.在raw_contacts表里面生成一条新的联系人的id
2.根据id在 data表里面插入对应的数据.
号簿管家
/**
* 读取联系人的方法
*
@param
context
*
@return
*/
public
List<ContactsBean> getContactsInfo(Context context){
ContactsBean contactsBean=
new
ContactsBean();
List<ContactsBean> contactsList=
new
ArrayList<ContactsBean>();
//得到内容解析者
ContentResolver resolver = context.getContentResolver();
//定义uri:查询raw_contacts表中所有联系人ID
Uri uri = Uri.parse(
"content://com.android.contacts/raw_contacts"
);
Uri dataUri = Uri. parse(
"content://com.android.contacts/data"
);
//1.内容解析器解析表中数据得到结果集
Cursor cursor = resolver.query(uri,
new
String[]{
"contact_id"
},
null
,
null
,
null
);
while
(cursor.moveToNext()){
String id=cursor.getString(0);
//得到结果集
if
(id!=
null
){
//2.根据联系人的id在data表中查询联系人的数据
Cursor Datacursor = resolver.query(dataUri,
null
,
"raw_contact_id=?"
,
new
String[]{id} ,
null
);
while
(Datacursor.moveToNext()){
String date1=Datacursor.getString(Datacursor.getColumnIndex(
"data1"
));
String mimetype=Datacursor.getString(Datacursor.getColumnIndex(
"mimetype_id"
));
if
(
"vnd.android.cursor.item/email_v2"
.equals(mimetype)){
contactsBean.setEmail(date1);
}
else
if
(
"vnd.android.cursor.item/name"
.equals(mimetype)){
contactsBean.setName(date1);
}
else
if
(
"vnd.android.cursor.item/phone_v2"
.equals(mimetype)){
contactsBean.setPhone(date1);
}
}
Datacursor.close();
contactsList.add(contactsBean);
contactsBean=
null
;
}
}
cursor.close();
return
contactsList;
- }