android中添加通过内容提供者添加联系人

来源:互联网 发布:广州淘宝开店培训班 编辑:程序博客网 时间:2024/06/05 16:43
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 ContastsTest extends AndroidTestCase {private static final String TAG = "ContastsTest";/** * 查询手机联系人信息包括:姓名、电话、邮件 */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 sb = new StringBuilder();sb.append("contactid=" + 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 mimetypetype = datacursor.getString(datacursor.getColumnIndex("mimetype"));// 判断数据类型name:表示是姓名;email_v2:表示是email邮件;phone_v2:表示是电话if ("vnd.android.cursor.item/name".equals(mimetypetype)) {sb.append("name=" + data);} else if ("vnd.android.cursor.item/email_v2".equals(mimetypetype)) {sb.append("email=" + data);} else if ("vnd.android.cursor.item/phone_v2".equals(mimetypetype)) {sb.append("phone=" + data);}}Log.i(TAG, sb.toString());}}/** * 根据手机号码获取联系人的姓名 */public void testContactsNameByNumber() throws Exception {String number = "15021868030";Uri uri = Uri.parse("content://com.android.contacts/data/phones/filter/"+ number);ContentResolver resolver = this.getContext().getContentResolver();Cursor cursor = resolver.query(uri, new String[] { "display_name" },null, null, null);if (cursor.moveToNext()) {String name = cursor.getString(0);Log.i(TAG, name);}cursor.close();}/** * 添加联系人 */public void testAddContacts() throws Exception {Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");ContentResolver resolver = this.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", "15021868030");resolver.insert(uri, values);// 添加EMAILvalues.clear();values.put("raw_contact_id", contactid);values.put("mimetype", "vnd.android.cursor.item/email_v2");values.put("data2", "2");// 2:表示单位emailvalues.put("data1", "ht896632@msn.com");resolver.insert(uri, values);}/** * 在同一个事务中完成联系人各项的操作 */public void testAddContact2() throws Exception {Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");ContentResolver resolver = this.getContext().getContentResolver();ArrayList<ContentProviderOperation> operations = new ArrayList<ContentProviderOperation>();ContentProviderOperation cpo1 = ContentProviderOperation.newInsert(uri).withValue("account_name", null).build();// 存放谷歌的登录账号operations.add(cpo1);// 添加姓名uri = Uri.parse("content://com.android.contacts/data");ContentProviderOperation cpo2 = ContentProviderOperation.newInsert(uri).withValueBackReference("raw_contact_id", 0)// 使用第一条记录添加完后返回的ID做为这条记录的值.withValue("mimetype", "vnd.android.cursor.item/name").withValue("data2", "卡卡").build();operations.add(cpo2);// 添加电话ContentProviderOperation cpo3 = ContentProviderOperation.newInsert(uri).withValueBackReference("raw_contact_id", 0)// 使用第一条记录添加完后返回的ID做为这条记录的值.withValue("mimetype", "vnd.android.cursor.item/phone_v2").withValue("data2", "2").withValue("data1", "15021868030").build();operations.add(cpo3);// 添加EMAILContentProviderOperation cpo4 = ContentProviderOperation.newInsert(uri).withValueBackReference("raw_contact_id", 0)// 使用第一条记录添加完后返回的ID做为这条记录的值.withValue("mimetype", "vnd.android.cursor.item/email_v2").withValue("data2", "2").withValue("data1", "ht896632@msn.com").build();operations.add(cpo4);resolver.applyBatch("com.android.contacts", operations);}}

注:添加联系人需要在项目清单中加入权限:  

<uses-permission android:name="android.permission.READ_CONTACTS" /><uses-permission android:name="android.permission.WRITE_CONTACTS" />
原创粉丝点击