package com.qianfeng.contentprovidercontacts;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Email;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.CommonDataKinds.StructuredName;
import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.RawContacts;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
public class MainActivity extends Activity {
/**
* ContactsContract.Contacts.CONTENT_URI;//联系人的Uri对象
* content://com.android.contacts.raw_contacts
*
* ContactsContract.CommonDataKinds.Phone.CONTENT_URI;//获取联系人电话的Uri
* content://com.android.contacts/data/phones
*
* ContactsContract.CommonDataKinds.Email.CONTENT_URI;//获取联系人邮箱的Uri
* content://com.android.contacts/data/emails
*/
private ListView lv;
private ContentResolver resolver;
private Uri contactsUri = ContactsContract.Contacts.CONTENT_URI;// 联系人的Uri对象
private Uri phoneUri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;// 获取联系人电话的Uri
private Uri emailUri = ContactsContract.CommonDataKinds.Email.CONTENT_URI;// 获取联系人邮箱的Uri
//操作联系人 增删改
private Uri doUri = android.provider.ContactsContract.Data.CONTENT_URI;
private List<Map<String, Object>> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list = new ArrayList<Map<String, Object>>();
lv = (ListView) findViewById(R.id.lv);
resolver = getContentResolver();// 得到内容解析者对象
//list = getData();// 获取数据源
//list = getContactsList();// 获取数据源
Cursor cursor=resolver.query(contactsUri, null, null, null, null);
list=getData1(cursor);
SimpleAdapter adapter = new SimpleAdapter(MainActivity.this, list,
R.layout.item, new String[] {
ContactsContract.Contacts.DISPLAY_NAME, "phone",
ContactsContract.CommonDataKinds.Email.DATA },
new int[] { R.id.tv_name, R.id.tv_number, R.id.tv_email });
lv.setAdapter(adapter);
}
/**
* 获取联系人的 姓名 电话号 邮箱
*
* @param cursor
* @return
*/
public List<Map<String, Object>> getData() {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Cursor cursor = resolver.query(contactsUri, null, null, null, null);
while (cursor.moveToNext()) {
Map<String, Object> map = new HashMap<String, Object>();
// 联系人的id
int contactid = cursor.getInt(cursor
.getColumnIndex(ContactsContract.Contacts._ID));
// 获取联系人的name
String contactName = cursor.getString(cursor
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
map.put(ContactsContract.Contacts._ID, contactid);
map.put(ContactsContract.Contacts.DISPLAY_NAME, contactName);
// 通过联系人的id 获取联系人电话信息
// Cursor phoneCusor = resolver.query(phoneUri, null,
// ContactsContract.CommonDataKinds.Phone.RAW_CONTACT_ID
// + "=?", new String[] { contactid + "" }, null);
Cursor phoneCusor=resolver.query(phoneUri, null,
ContactsContract.CommonDataKinds.Phone.RAW_CONTACT_ID+"=?",
new String[]{contactid+""}, null);
while (phoneCusor.moveToNext()) {
// 获取联系人电话号码
String phone = phoneCusor
.getString(phoneCusor
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
map.put("phone", phone);
}
Cursor emailCusor = resolver.query(emailUri, null,
ContactsContract.CommonDataKinds.Email.RAW_CONTACT_ID
+ "=?", new String[] { contactid + "" }, null);
while (emailCusor.moveToNext()) {
// 获取联系人邮箱
String email = emailCusor
.getString(emailCusor
.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
map.put(ContactsContract.CommonDataKinds.Email.DATA, email);
}
list.add(map);
}
return list;
}
// 按钮的点击事件
public void clickBtn(View v) {
switch (v.getId()) {
case R.id.btn_add:// 添加数据
InsertData();
break;
case R.id.btn_update:// 修改数据
UpdateData();
break;
case R.id.btn_delete:// 删除数据
DeleteData();
break;
default:
break;
}
}
/**
* 删除联系人数据
*/
public void DeleteData(){
int flag = resolver.delete(doUri,Data.RAW_CONTACT_ID+"=?", new String[]{3+""});
if(flag>0){
Toast.makeText(MainActivity.this, "删除成功11111", 0).show();
}else{
Toast.makeText(MainActivity.this, "删除不成功。。。", 0).show();
}
}
/**
* 修改联系人
*/
public void UpdateData(){
ContentValues values = new ContentValues();
values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, "110");
int flag = resolver.update(doUri, values, Data.RAW_CONTACT_ID+"=?", new String[]{3+""});
if(flag>0){
Toast.makeText(MainActivity.this, "修改成功", 0).show();
}else{
Toast.makeText(MainActivity.this, "修改不成功。。。", 0).show();
}
}
/**
* 添加联系人
*/
public void InsertData() {//向Data表中插入信息
ContentValues values =new ContentValues();
Uri newUri = resolver.insert(RawContacts.CONTENT_URI, values);
long contactsId =ContentUris.parseId(newUri);//得到要插入的联系人id
//添加联系人名称
values= new ContentValues();
values.put(Data.RAW_CONTACT_ID, contactsId);
//标志 当前data存储 联系人数据
values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
//添加联系人名称
values.put(StructuredName.DISPLAY_NAME, "zhangsansan");
resolver.insert(doUri, values);
//添加电话号码
values= new ContentValues();
values.put(Data.RAW_CONTACT_ID, contactsId);
values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);//插入电话信息
values.put(Phone.NUMBER, "12345654321");
resolver.insert(doUri, values);
//添加邮箱
values= new ContentValues();
values.put(Data.RAW_CONTACT_ID, contactsId);
values.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);//插入邮箱信息
values.put(Email.DATA,"12345654321");
resolver.insert(doUri, values);
}
/**
* 通过contentreslover查询联系人的 姓名 电话 邮箱等数据展示
* @return 存储数据的集合
*/
public List<Map<String, Object>> getContactsList(){
List<Map<String, Object>> list=new ArrayList<Map<String,Object>>();
Cursor cursor=resolver.query(contactsUri, null, null, null, null);//查询raw_contacts表中的数据 _id display_name
while(cursor.moveToNext()){
Map<String, Object> map=new HashMap<String, Object>();
//获取联系人的id
int contactId=cursor.getInt(cursor.getColumnIndex(ContactsContract.Contacts._ID));
//获取联系人的名字
String display_name=cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
map.put(ContactsContract.Contacts._ID, contactId);
map.put(ContactsContract.Contacts.DISPLAY_NAME, display_name);
System.out.println("==>"+display_name);
//根据当前联系人的id查询在data表中的电话的信息
Cursor phoneCursor=resolver.query(phoneUri, null,ContactsContract.CommonDataKinds.Phone.RAW_CONTACT_ID+"=?",
new String[]{contactId+""}, null);
String phone="";
while(phoneCursor.moveToNext()){
//获取当前联系人的电话号码
phone=phoneCursor.getString(phoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
System.out.println("------phone-----"+phone);
}
map.put("phone", phone);
//根据当前联系人的id查询data表中的邮箱的信息
Cursor emailCursor=resolver.query(emailUri, null,ContactsContract.CommonDataKinds.Email.RAW_CONTACT_ID+"=?",
new String[]{contactId+""}, null);
String email="";
while(emailCursor.moveToNext()){
//获取当前联系人的email信息
email=emailCursor.getString(emailCursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
}
map.put(ContactsContract.CommonDataKinds.Email.DATA, email);
list.add(map);
}
return list;
}
/**
* 获取联系人的,姓名,电话,邮箱等
*
* @param cursor
*/
public List<Map<String, Object>> getData1(Cursor cursor) {
list = new ArrayList<Map<String, Object>>();
while (cursor.moveToNext()) {
Map<String, Object> map = new HashMap<String, Object>();
// 联系人的id
int contactId = cursor.getInt(cursor
.getColumnIndex(ContactsContract.Contacts._ID));
// 获取联系人的name
String contactName = cursor.getString(cursor
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
map.put(ContactsContract.Contacts._ID, contactId);
map.put(ContactsContract.Contacts.DISPLAY_NAME, contactName);
// 通过联系人的id 获取联系人电话信息
Cursor phoneCursor = resolver.query(phoneUri, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ "=?", new String[] { contactId + "" }, null);
String phone = null;
while (phoneCursor.moveToNext()) {
// 获取联系人的电话号码
phone = phoneCursor
.getString(phoneCursor
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
map.put("phone", phone);
}
phoneCursor.close();
Cursor emailCursor = resolver.query(emailUri, null,
ContactsContract.CommonDataKinds.Email.CONTACT_ID
+ "=?", new String[] { contactId + "" }, null);
String email = null;
while (emailCursor.moveToNext()) {
// 获取联系人的邮箱
email = emailCursor
.getString(emailCursor
.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
map.put(ContactsContract.CommonDataKinds.Email.DATA, email);
}
emailCursor.close();
System.out.println("------------------------" + contactId);
System.out.println("------------------------" + contactName);
System.out.println("------------------------" + phone);
System.out.println("------------------------" + email);
list.add(map);
}
cursor.close();
return list;
}
}
ContentResolver之读取联系人
最新推荐文章于 2022-12-24 23:45:00 发布