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);
posted on 2012-05-30 17:11  简单生活lee  阅读(722)  评论(0)    收藏  举报