2014-10-10 11 views
5

Próbuję zaktualizować wyświetlaną nazwę kontaktu email.After dużo wysiłku osiągnąć to z następujących snipet kodu.Ale jest problem każda nazwa podaję do aktualizacji to 2 dołączone po nim, gdy widzę go w aplikacji kontaktowej.Jak zaktualizować nazwę wyświetlaną za pomocą identyfikatora e-mail?

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

ops.add(ContentProviderOperation 
     .newUpdate(
       ContactsContract.Data.CONTENT_URI) 

     .withSelection(
       ContactsContract.CommonDataKinds.Email.CONTACT_ID 
         + " = ?", 
       new String[] { String.valueOf(model 
         .getContactid()) }) 
     .withValue(ContactsContract.Data.MIMETYPE, 
       Email.CONTENT_ITEM_TYPE) 
     .withValue(
       ContactsContract.CommonDataKinds.Email.DATA, 
       "[email protected]") 
     .withValue(
       ContactsContract.CommonDataKinds.Email.DISPLAY_NAME, 
       "priyanka") 
     .withValue(
       ContactsContract.CommonDataKinds.Email.TYPE, 
       ContactsContract.CommonDataKinds.Email.TYPE_WORK) 
     .build()); 

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

Context ctx = getApplicationContext(); 
int duration = Toast.LENGTH_SHORT; 
Toast toast = Toast.makeText(ctx,"Update successful", duration); 
toast.show(); 

Logger.debug("Update successful"); 

Aktualizuje wyświetlanie nazwy jako „Priyanka 2” zamiast „Priyanka” jak widać 2 get dołączany po nazwie wyświetlacza.

+0

Sprawdź wartość tej zmiennej, gdzie jesteś wprowadzenie nazwy w LogCat. Użyj 'Log.d (" Name: ", thatVariable);' aby to zrobić. Musiałeś połączyć tę wartość z "2" lub coś podobnego. –

+0

Witam, jak zweryfikowałeś, że 2 jest dołączane do nazwy? – Techfist

+0

Ponownie ładowanie tego kontaktu pojawia się dołączone 2 –

Odpowiedz

4

Wreszcie dostałem go uruchomić tutaj jest mój kod, dzięki wszystkim za odpowiedzi i wsparcie

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 
+0

Dlaczego rozpocząłeś nagrodę? Czy w twojej odpowiedzi jest jakiś problem? –

+0

Rozpocząłem grę premiową, ponieważ nie mogłem znaleźć odpowiedzi, a następnie otrzymałem odpowiedź, więc zamieszczam odpowiedź tutaj. Spędzam ponad 7 dni, aby znaleźć odpowiedź. –

Powiązane problemy