Android开发笔记——联系人添加功能的实现(2.2版本)
在SDK的例子里面找了个联系人操作的DEMO,按照里面的方法实现了联系人添加功能。先上截图,再上代码:

1 String name = "a12222233344"; 2 String phoneNumber = "13812333333"; 3 int phoneType = ContactsContract.CommonDataKinds.Phone.TYPE_HOME; 4 String email ="12345@163.com"; 5 int emailType = ContactsContract.CommonDataKinds.Email.TYPE_WORK; 6 ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 7 ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI) 8 .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)//如果去掉ACCOUNT_TYPE、ACCOUNT_NAME会出现空指针错误,如果没有可 9 .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null) //设置为空。 10 .build()); 11 ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 12 .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) 13 .withValue(ContactsContract.Data.MIMETYPE, 14 ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE) 15 .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name) 16 .build()); 17 ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 18 .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) 19 .withValue(ContactsContract.Data.MIMETYPE, 20 ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE) 21 .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, phoneNumber) 22 .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, phoneType) 23 .build()); 24 ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI) 25 .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) 26 .withValue(ContactsContract.Data.MIMETYPE, 27 ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE) 28 .withValue(ContactsContract.CommonDataKinds.Email.DATA, email) 29 .withValue(ContactsContract.CommonDataKinds.Email.TYPE, emailType) 30 .build()); 31 try { 32 context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); 33 } catch (Exception e) { 34 // Display warning 35 // int duration = Toast.LENGTH_SHORT; 36 // Toast toast = Toast.makeText(context, "联系人信息添加失败", duration); 37 // toast.show(); 38 }
上面是通过applyBatch批量执行的,另外由于代码不是运行在Activity中,所有需要context.getContentResolver().xxxx。下面再贴一段通过context.getContentResolver().insert()添加联系人的代码。
1 String name = "a12222233344"; 2 String phoneNumber = "13812333333"; 3 int phoneType = ContactsContract.CommonDataKinds.Phone.TYPE_HOME; 4 String email ="12345@163.com"; 5 int emailType = ContactsContract.CommonDataKinds.Email.TYPE_WORK; 6 ContentValues values = new ContentValues(); 7 values.putNull(ContactsContract.RawContacts.ACCOUNT_TYPE); 8 values.putNull(ContactsContract.RawContacts.ACCOUNT_NAME); 9 Uri rawContactUri = context.getContentResolver().insert(RawContacts.CONTENT_URI, values); 10 long rawContactId = ContentUris.parseId(rawContactUri); 11 12 values.clear(); 13 values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId); 14 values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE); 15 values.put(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name); 16 context.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values); 17 18 19 values.clear(); 20 values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId); 21 values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE); 22 values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, phoneNumber); 23 values.put(ContactsContract.CommonDataKinds.Phone.TYPE, phoneType); 24 context.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values); 25 26 values.clear(); 27 values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId); 28 values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE); 29 values.put(ContactsContract.CommonDataKinds.Email.DATA, email); 30 values.put(ContactsContract.CommonDataKinds.Email.TYPE, emailType); 31 context.getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);
浙公网安备 33010602011771号