ContentResolver之读取联系人

来源:互联网 发布:国外注册域名 编辑:程序博客网 时间:2024/06/05 06:32
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;// 获取联系人电话的Uriprivate Uri emailUri = ContactsContract.CommonDataKinds.Email.CONTENT_URI;// 获取联系人邮箱的Uri//操作联系人  增删改private Uri doUri = android.provider.ContactsContract.Data.CONTENT_URI;private List<Map<String, Object>> list;@Overrideprotected 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>();// 联系人的idint contactid = cursor.getInt(cursor.getColumnIndex(ContactsContract.Contacts._ID));// 获取联系人的nameString 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_namewhile(cursor.moveToNext()){Map<String, Object> map=new HashMap<String, Object>();//获取联系人的idint 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>();// 联系人的idint contactId = cursor.getInt(cursor.getColumnIndex(ContactsContract.Contacts._ID));// 获取联系人的nameString 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;}}

0 1
原创粉丝点击