2014-10-14 3 views
1

기존 연락처의 표시 이름과 전자 메일 ID를 업데이트하려고하는데 전자 메일 주소를 업데이트 할 수 있지만 표시 이름이 업데이트되지 않습니다. 사용중인 코드는 여기에 있습니다. 나는 더 많은 코드를 시도했지만 아무 것도 나를 위해 일하고있다.표시 이름이 업데이트되지 않습니다. Email.Content_URI

Cursor cursorEmail = getContentResolver() 
       .query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, 
         null, 
         ContactsContract.CommonDataKinds.Email.CONTACT_ID 
           + " = " 
           + model.getContactid(), 
         null, null); 

    if (cursorEmail 
      .moveToFirst()) { 
     ops.add(ContentProviderOperation 
       .newUpdate(
         ContactsContract.Data.CONTENT_URI) 
       .withSelection(
         ContactsContract.Data.CONTACT_ID 
           + "=? AND " 
           + ContactsContract.Data.MIMETYPE 
           + "=?", 
         new String[] { 
           String.valueOf(model 
             .getContactid()), 
           ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE }) 
       .withValue(
         ContactsContract.Data.MIMETYPE, 
         ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE) 
       .withValue(
         ContactsContract.CommonDataKinds.Email.TYPE, 
         ContactsContract.CommonDataKinds.Email.TYPE_WORK) 
       .withValue(
         ContactsContract.CommonDataKinds.Email.ADDRESS, 
         txtEditedMailId 
           .getText() 

           .toString() 
           .trim() 
           .toLowerCase()) 
       .withValue(
         ContactsContract.CommonDataKinds.Email.DISPLAY_NAME, 
         txtEditedName 
           .getText() 
           .toString() 
           .trim() 
           .toLowerCase()) 
       .build()); 
    } 
    cursorEmail.close(); 

    getContentResolver() 
      .applyBatch(
        ContactsContract.AUTHORITY, 
        ops); 

답변

2
final ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 

Cursor cursorEmail = getContentResolver() 
     .query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, 
       null, 
       ContactsContract.CommonDataKinds.Email.CONTACT_ID 
         + " = " 
         + model.getContactid(), 
       null, null); 

if (cursorEmail.moveToFirst()) { 

    //Update Email 

    ops.add(ContentProviderOperation 
      .newUpdate(Data.CONTENT_URI) 
      .withSelection(
        Email.CONTACT_ID 
          + "=? AND " 
          + ContactsContract.Data.MIMETYPE 
          + "=?", 
        new String[] { 
          String.valueOf(model 
            .getContactid()), 
          ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE }) 
      .withValue(
        ContactsContract.Data.MIMETYPE, 
        ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE) 
      .withValue(
        ContactsContract.CommonDataKinds.Email.TYPE, 
        ContactsContract.CommonDataKinds.Email.TYPE_WORK) 
      .withValue(
        ContactsContract.CommonDataKinds.Email.DATA, 
        txtEditedMailId 
          .getText() 

          .toString() 
          .trim() 
          .toLowerCase()) 

      .build()); 

    //Update image 

    BitmapFactory.Options options = new BitmapFactory.Options(); 
    options.inPreferredConfig = Bitmap.Config.ARGB_8888; 
    Bitmap bitmap = BitmapFactory 
      .decodeFile(localPathEditedImage, 
        options); 

    Logger.debug("path--------" 
      + imgAbsPath); 
    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 

    bitmap.compress(
      Bitmap.CompressFormat.PNG, 100, 
      baos); // bm is the bitmap object 
    byte[] photoByteArray = baos 
      .toByteArray(); 

    Builder builder = ContentProviderOperation 
      .newUpdate(ContactsContract.Data.CONTENT_URI); 

    builder = ContentProviderOperation 
      .newUpdate(ContactsContract.Data.CONTENT_URI); 
    builder.withSelection(
      ContactsContract.Data.CONTACT_ID 
        + "=?" 
        + " AND " 
        + ContactsContract.Data.MIMETYPE 
        + "=?", 
      new String[] { 
        String.valueOf(model 
          .getContactid()), 
        ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE }); 
    builder.withValue(
      ContactsContract.CommonDataKinds.Photo.PHOTO, 
      photoByteArray); 
    ops.add(builder.build()); 

     //Update Display name 

    ops.add(ContentProviderOperation 
      .newUpdate(
        RawContacts.CONTENT_URI) 

      .withSelection(
        Email.CONTACT_ID 
          + " = ?", 
        new String[] { String.valueOf(model 
          .getContactid()) }) 

      .withValue(
        RawContacts.DISPLAY_NAME_PRIMARY, 
        txtEditedName.getText() 
          .toString()) 

      .build()); 

} 
cursorEmail.close(); 

//Execute Batch 

getContentResolver().applyBatch(
     ContactsContract.AUTHORITY, ops); 


//Contact updated