这是我添加联系人的一段代码,为什么没姓名?
void Add()
    {
     ArrayList<ContentProviderOperation> ops2 = new ArrayList<ContentProviderOperation>();  
        int rawContactInsertIndex = ops2.size();          ops2  
                .add(ContentProviderOperation  
                        .newInsert(  
                         ContactsContract.RawContacts.CONTENT_URI)  
                        .withValue(  
                         ContactsContract.RawContacts.ACCOUNT_TYPE,  
                                null)  
                        .withValue(  
                         ContactsContract.RawContacts.ACCOUNT_NAME,  
                                null)  
                        .build());          ops2  
                .add(ContentProviderOperation  
                        .newInsert(  
                         ContactsContract.Data.CONTENT_URI)  
                        .withValueBackReference(  
                         ContactsContract.Data.RAW_CONTACT_ID,  
                                rawContactInsertIndex)  
                        .withValues(  
                                getSimpleCV())  
                        .withValues(  
                                getPhoneCV())  
                        .build()); 
        try {
this.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops2);
Toast.makeText(getApplicationContext(), "联系人添加成功", Toast.LENGTH_LONG).show();
} catch (RemoteException e) {
// TODO Auto-generated catch block
Log.e("ADD","添加联系人时出错"+e.getMessage());
Toast.makeText(getApplicationContext(), "联系人添加失败:"+e.getMessage(), Toast.LENGTH_LONG).show();
} catch (OperationApplicationException e) {
// TODO Auto-generated catch block
Log.e("ADD","添加联系人时出错"+e.getMessage());
Toast.makeText(getApplicationContext(), "联系人添加失败:"+e.getMessage(), Toast.LENGTH_LONG).show();
}
    }
    public ContentValues getSimpleCV() {  
        ContentValues cv = new ContentValues();  
        cv.put(ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);  
        cv.put(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, "三 张"); 
        cv.put(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, "三 ");
        cv.put(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME, "张");
        cv.put(ContactsContract.CommonDataKinds.StructuredName.PHONETIC_GIVEN_NAME, "三 ");
        cv.put(ContactsContract.CommonDataKinds.StructuredName.PHONETIC_FAMILY_NAME, "张");
        return cv;  
    }  
  
    public ContentValues getPhoneCV() {  
        ContentValues cv = new ContentValues();  
        cv.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);  
        cv.put(ContactsContract.CommonDataKinds.Phone.NUMBER, "10086");  
        cv.put(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_COMPANY_MAIN);  
        return cv;  
    }

解决方案 »

  1.   

    String name = "First Family";
    String phone = "0123456789";
    ContentValues values = new ContentValues();
    values.put(Data.DISPLAY_NAME, name);
    Uri rawContactUri = c.getContentResolver().insert(RawContacts.CONTENT_URI, values);
    long rawContactId = ContentUris.parseId(rawContactUri);
    long contactId = Util.getContactId(c, rawContactId);
    System.out.println("rawContactId = " + rawContactId);
    System.out.println("contactId = " + contactId);values.clear();
    values.put(Phone.NUMBER, phone);
    values.put(Phone.TYPE, Phone.TYPE_OTHER);
    values.put(Phone.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
    values.put(Data.RAW_CONTACT_ID, rawContactId);
    c.getContentResolver().insert(Data.CONTENT_URI, values);values.clear();
    values.put(Data.MIMETYPE, Data.CONTENT_TYPE);
    values.put(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name);
    values.put(Data.RAW_CONTACT_ID, rawContactId);
    c.getContentResolver().insert(Data.CONTENT_URI, values);values.clear();
    values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
    values.put(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name);
    values.put(Data.RAW_CONTACT_ID, rawContactId);
    c.getContentResolver().insert(Data.CONTENT_URI, values);