2011-03-16 3 views
2

J'essaie d'utiliser l'API de ContactsContract pour ajouter des notes à mes contacts. Je ne suis pas sûr de bien comprendre les différents ID de contact et les ID de contact bruts. Mon problème semble assez similaire à ce qui est discuté here. Je veux: 1. Trouvez un contact spécifique. 2. Une fois trouvé, insérer des notes spécifiquesAndroid: Ajout de notes aux contacts existants

Je fais de la manière suivante:

Cursor contacts = getContentResolver().query(ContactsContract.Data.CONTENT_URI, null, null, null, null); 

while(contacts.moveToNext()){ 

     Log.d("TC", "Found : " + name); 

     int rid = contacts.getColumnIndex(ContactsContract.Data.RAW_CONTACT_ID); 
     int rawContactID = contacts.getInt(rid); 

     int nameIdx = contacts.getColumnIndex(ContactsContract.Data.DISPLAY_NAME); 
     String name = contacts.getString(nameIdx); 

     if <Some condition>{ 
      ContentValues contentValues = new ContentValues(); 
      contentValues.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactID); 
      contentValues.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Note.CONTENT_ITEM_TYPE); 
      contentValues.put(ContactsContract.CommonDataKinds.Note.NOTE, "Bazzinga !"); 
      int stat = getContentResolver().update(ContactsContract.Contacts.CONTENT_URI, contentValues, null , null); 
      Log.d("TC", "Update returned : " + stat); 
     } 

} 

Je reçois aucune erreur. Mais le contact ne vous devez pas mis à jour :(

Répondre

2

Remplacez le

getContentResolver().update(...)
avec

getContentResolver().insert(Data.CONTENT_URI, contentValues);

également une déclaration où dans la requête Data.CONTENT_URI. Comme Tableau de données peut avoir plusieurs entrées avec la même raw_contact_id. Vous pouvez utiliser "Data.MIMETYPE = StructuredName.CONTENT_ITEM_TYPE"

+0

Sur une révision de la documentation, j'ai compris que j'avais besoin d'insérer une ligne dans la table de données pour le RawContact, j'essaierai! – advantej

+0

A travaillé! Karan – advantej

Questions connexes