2010-07-14 6 views
0

Voici quelques choses que je ne pouvais pas comprendre et ne pouvait trouver quelqu'un d'autre les afficher dans la discussion:problèmes avec l'ancien et le nouveau API Contact

1. Dans la nouvelle API

ContactsContract. AggregationExceptions table ne fonctionne pas vraiment pour moi :

lorsque je tente d'insérer une ligne dans la table, il me donne cette erreur:

07-13 14:20:09.399: ERROR/XXXXX(3074): java.lang.UnsupportedOperationException: URI: content://com.android.contacts/aggregation_exceptions, calling user: ............

mon code ici:

ContentValues values = new ContentValues(); 

values.put(AggregationExceptions.RAW_CONTACT_ID1, 

String.valueOf(oldRawContactId)); 

values.put(AggregationExceptions.RAW_CONTACT_ID2, 

String.valueOf(newRawContactId)); 

values.put(AggregationExceptions.TYPE, AggregationExceptions.TYPE_KEEP_TOGETHER); 

mContentResolver.insert(AggregationExceptions.CONTENT_URI, values); 

et je suis sûr que les deux id de contact brut existe.

2.in l'ancienne API:

lorsque je crée un groupe dans le livre de contact, le nom du groupe est non représenté (ou non correctement)

est le code ici:

ContentValues values = new ContentValues(); 

values.put(Contacts.Groups.SHOULD_SYNC, 1); 

values.put(Contacts.Groups.SYSTEM_ID, mGroupID); 

values.put(Contacts.Groups.NAME, mGroupTitle); 

mContentResolver.insert(Contacts.Groups.CONTENT_URI, values); 

3.in l'ancienne API:

lors de l'insertion d'une méthode de contact IM personnalisé pour un contact, les données sont insérées et affichés correctement, mais l'utilisateur ne peut pas modifier le contact en utilisant le d efault contact app plus. Si je supprime la méthode de contact, l'utilisateur peut modifier à nouveau le contact.

est ici le code pour insérer la méthode de contact:

ContentValues values = new ContentValues(); 

values.put(ContactMethods.PERSON_ID, newContactId); 

values.put(ContactMethods.KIND, Contacts.KIND_IM); 

values.put(ContactMethods.TYPE, ContactMethods.TYPE_CUSTOM); 

values.put(ContactMethods.AUX_DATA, ContactMethods.encodeCustomImProtocol(MYIM_PROTOCOL)); 

values.put(ContactMethods.DATA, buddyId); 

values.put(ContactMethods.ISPRIMARY, 0); 

values.put(ContactMethods.LABEL, IM_LABEL); 

mContentResolver.insert(ContactMethods.CONTENT_URI, values); 

Répondre

2

AggregationExceptions ne prennent pas en charge insérer ou supprimer, mettre à jour seulement. Faites une mise à jour et ça va, "juste travailler". Les javadocs expliquent cela:

Constants for the contact aggregation exceptions table, which contains aggregation rules overriding those used by automatic aggregation. This type only supports query and update. Neither insert nor delete are supported.

Questions connexes