En essayant d'ajouter un numéro de téléphone à un contact déjà existant sur un téléphone Droid. Le faire en même temps que je crée un contact est trivial, car la référence arrière que je fournis est simplement 0 lors de la création d'un ContentProviderOperation. Mais en essayant de trouver le backreference par l'interrogation d'un nom d'affichage comme cela ne fonctionne pas:Ajouter numéro à contacter sur Android 2.0
Cursor rawContactsReferenceCursor =
contentResolver.query(Data.CONTENT_URI,
new String[]{Data.RAW_CONTACT_ID},
Data.DISPLAY_NAME+"=\""+displayName+"\"", null, null);
Pendant que je reçois un identifiant de contact brut, le code suivant génère juste un IndexOutOfBoundException (rawConcactReferenceID est la variable que je suis de la demande précédente):
ArrayList<ContentProviderOperation> op_list =
new ArrayList<ContentProviderOperation>();
op_list.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI)
.withValueBackReference(Data.RAW_CONTACT_ID, rawConcactReferenceID)
.withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE)
.withValue(Phone.NUMBER, testNumber)
.withValue(Phone.TYPE, Phone.TYPE_CUSTOM)
.withValue(Phone.LABEL, testLabel)
.build());
ContentProviderResult[] result =
contentResolver.applyBatch(ContactsContract.AUTHORITY, op_list);
Le grand défi est un manque énorme de bonne documentation. Je serais très satisfait de mettre la main sur des copypastas pour étudier.
Cheers,