Comment mettre à jour un contact existant?
J'ai un contact existant, j'ai besoin d'ajouter une adresse de travail pour que le contact existant. Je suis en utilisant le code suivant, mais ça ne fonctionne pas.
String selectPhone = Data.CONTACT_ID + "=? AND " + Data.MIMETYPE + "='" +
ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE +
"'" + " AND " + ContactsContract.CommonDataKinds.StructuredPostal.TYPE + "=?";
String[] phoneArgs = new String[]
{String.valueOf(ContactId), String.valueOf(
ContactsContract.CommonDataKinds.StructuredPostal.TYPE_WORK)};
ops.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI)
.withSelection(selectPhone, phoneArgs)
.withValue(ContactsContract.CommonDataKinds.StructuredPostal.STREET, STREET)
.withValue(ContactsContract.CommonDataKinds.StructuredPostal.CITY, CITY)
.withValue(ContactsContract.CommonDataKinds.StructuredPostal.REGION, REGION)
.withValue(ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE, POSTCODE)
.withValue(ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY, COUNTRY)
.build());
this.context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
Aucune solution pour cela?
source d'informationauteur Baskar
Vous devez vous connecter pour publier un commentaire.
//Désolé pour mon mauvais anglais
//Il semble que dans le premier post, vous avez oublié d'ajouter le
MimeType
dans l'opération.**
**
Veuillez vérifier ceci et laissez-moi savoir le résultat
J'ai enfin trouvé la solution appropriée..merci Beaucoup pour ce Comment modifier Contact existant
Le secret est que vous devez passer les deux valeurs .withSelection comme indiqué ci-dessous:
où les Données._ID valeur mDataId est obtenue de cette manière:
Et getCursorString méthode est quelque chose comme:
Cela et seulement cela est le truc..
Chaque champ (email, nom, adreess) a son propre type mime, que vous devez utiliser pour mettre à jour le champ.
Nous allons travailler avec les Données de la table, où chacun de ces Données.RAW_CONTACT_ID représente un détail de certains de contact.
Donc, nous avons besoin de trouver les Données.RAW_CONTACT_ID où l'id est l'id du contact que vous voulez modifier.
J'espère que ce code devrait être utile pour vous.
Si un nouveau contact a été créé, mais sans adresse, et maintenant vous voulez ajouter une adresse pour que contcat. Dans ce cas, utilisez la même requête que précédemment, mais il suffit de changer newUpdate à newInsert, car cette ligne n'existe pas encore.
Peut-être que vous pourriez utiliser L'intention et de son ACTION_EDIT pour obtenir votre utilisateur de Modifier l'adresse de travail...
vous devez utiliser des Données".RAW_CONTACT_ID" au lieu de "des Données.CONTACT_ID" dans la clause de sélection.