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;
- }