vus520 发表于 2013-1-3 17:00:47

实例教程十一:访问通信录中的联系人和添加联系人

实例教程十一:访问通信录中的联系人和添加联系人

<div class="postbody"><div id="cnblogs_post_body">Android《五子连珠》游戏完整源码分享
http://www.eoeandroid.com/thread-211877-1-1.html
android仿酷狗播放器
http://www.eoeandroid.com/thread-185894-1-1.html
自制K线图,新鲜出炉
http://www.eoeandroid.com/thread-182290-1-1.html
<div class="cnblogs_code">package cn.itcast.contacts;import java.util.ArrayList;import android.content.ContentProviderOperation;import android.content.ContentResolver;import android.content.ContentUris;import android.content.ContentValues;import android.database.Cursor;import android.net.Uri;import android.test.AndroidTestCase;import android.util.Log;public class ContactsTest extends AndroidTestCase{      private static final String TAG = "ContactsTest";      /**         * 获取 所有联系人         * @throws Exception         */      public void testContacts() throws Exception{                Uri uri = Uri.parse("content://com.android.contacts/contacts");                ContentResolver resolver = getContext().getContentResolver();                Cursor cursor = resolver.query(uri, new String[]{"_id"}, null, null, null);                while(cursor.moveToNext()){                        int contactId = cursor.getInt(0);                        StringBuilder sBuilder = new StringBuilder("contactId=");                        sBuilder.append(contactId);                        uri = Uri.parse("content://com.android.contacts/contacts" + contactId + "/data");                        Cursor dataCursor = resolver.query(uri, new String[]{"mimetype", "data1", "data2"},                                       null, null, null);                        while(dataCursor.moveToNext()){                              String data = dataCursor.getString(dataCursor.getColumnIndex("data1"));                              String type = dataCursor.getString(dataCursor.getColumnIndex("data2"));                              if("vnd.android.cursor.item/name".equals(type)){ //姓名                                        sBuilder.append(", name=" + data);                              }else if("vnd.android.cursor.item/email_v2".equals(type)){ //email                                        sBuilder.append(", email=" + data);                              }else if("vnd.android.cursor.item/phone_v2".equals(type)){ //phone                                        sBuilder.append(", phone=" + data);                              }                        }                        Log.i(TAG, sBuilder.toString());                }      }      /**         * 根据号码获取联系人的姓名         * @throws Exception         */      public void testContactNameByPhoneNumber() throws Exception{                String pNumber = "18012345678";                Uri uri = Uri.parse("content://com.android.contacts/data/phones/filter/" + pNumber);                ContentResolver resolver = getContext().getContentResolver();                Cursor cursor = resolver.query(uri, new String[]{"display_name"}, null, null, null);                //为何使用moveToFirst()?                //因为查找的数据只有一条,那一开始肯定就有一条                if(cursor.moveToFirst()){                        String name = cursor.getString(0);                        Log.i(TAG, name);                }                cursor.close();      }      /**         * 添加联系人         * @throws Exception         */      public void testAddContact() throws Exception{                Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");                ContentResolver resolver = getContext().getContentResolver();                ContentValues values = new ContentValues();                long contactId = ContentUris.parseId(resolver.insert(uri, values));                //添加姓名                uri = Uri.parse("content://com.android.contacts/data");                values.put("raw_contact_id", contactId);                values.put("mimetype", "vnd.android.cursor.item/name");                values.put("data2", "张小小");                              resolver.insert(uri, values);                //添加电话                values.clear();                values.put("raw_contact_id", contactId);                values.put("mimetype", "vnd.android.cursor.item/phone_v2");                values.put("data2", "2");                        values.put("data1", "13671325874");                resolver.insert(uri, values);                //添加Email                values.clear();                values.put("raw_contact_id", contactId);                values.put("mimetype", "vnd.android.cursor.item/email_v2");                values.put("data2", "2");                        values.put("data1", "123@qq.com");                resolver.insert(uri, values);      }      /**         * 在同一事务中完成 联系人各项数据的添加         * @throws Exception         */      public void testAddContact2() throws Exception{                Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");                ContentResolver resolver = getContext().getContentResolver();                ArrayList<ContentProviderOperation> operations = new ArrayList<ContentProviderOperation>();                ContentProviderOperation op1 = ContentProviderOperation.newInsert(uri)                .withValue("account_name", null)                .build();                              operations.add(op1);                uri = Uri.parse("content://com.android.contacts/data");                //添加姓名                //0--使用第一操作对象 添加完记录后所返回的ID                ContentProviderOperation op2 = ContentProviderOperation.newInsert(uri)                .withValueBackReference("raw_contact_id", 0)                .withValue("mimetype", "vnd.android.cursor.item/name")                .withValue("data2", "张三")                .build();                              operations.add(op2);                ContentProviderOperation op3 = ContentProviderOperation.newInsert(uri)                .withValueBackReference("raw_contact_id", 0)                .withValue("mimetype", "vnd.android.cursor.item/phone_v2")                .withValue("data1", "13671325874")                .withValue("data2", "2")                              .build();                              operations.add(op3);                              ContentProviderOperation op4 = ContentProviderOperation.newInsert(uri)                .withValueBackReference("raw_contact_id", 0)                .withValue("mimetype", "vnd.android.cursor.item/email_v2")                .withValue("data1", "123@qq.com")                .withValue("data2", "2")                              .build();                              operations.add(op4);                resolver.applyBatch("com.android.contacts", operations);                //applyBatch运行流程                //{                //      begin();                //      for(op: operations){                //                op.app()                //      }                //      end();                //}      }}
页: [1]
查看完整版本: 实例教程十一:访问通信录中的联系人和添加联系人