2014-10-10 12 views
5

Sto tentando di aggiornare il nome visualizzato di un contatto & email. Dopo molti sforzi, ottengo quello dal seguente snipet di codice. Ma c'è un problema con qualsiasi nome che fornisco per l'aggiornamento che viene aggiunto 2 dopo quando lo vedo nell'app di contatto.Come aggiornare il nome visualizzato con l'ID 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"); 

Questo display si aggiorna nome come "priyanka 2" invece di "Priyanka", come hai visto 2 get aggiunto dopo il nome visualizzato.

+0

controllare il valore di tale variabile in cui si sta mettendo il nome nel logcat. Usa 'Log.d (" Name: ", thatVariable);' per farlo. Devi aver concatenato quel valore con "2" o qualcosa del genere. –

+0

Ciao, come hai verificato che 2 viene aggiunto al nome? – Techfist

+0

Ancora una volta il caricamento di quel contatto appare aggiunto a 2 –

risposta

4

Finalmente ho capito correre qui non è il mio codice, ringrazia tutti per le vostre risposte e sostenere

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

Perché hai iniziato a taglia? C'è qualche problema nella tua risposta qui ?? –

+0

Ho iniziato taglie perché non ero in grado di trovare la risposta, quindi ho ricevuto la risposta, quindi invio una risposta qui. Trascorro più di 7 giorni per trovare la risposta. –

Problemi correlati