Je me suis retrouvé à avoir besoin de faire ça. Voici comment j'ai réussi à faire le travail.
Premier je crée un contact brut en faisant :
adb shell content insert --uri content://com.android.contacts/raw_contacts --bind account_type:s:SOME_ACCOUNT_TYPE --bind account_name:s:MY_ACCOUNT_NAME
Cela créera effectivement un nouveau contact (vous pourrez voir un nouveau contact dans l'application Contact d'Android) mais sans informations supplémentaires (téléphone, nom, courriel, etc.).
Suivant J'ajoute des informations sur le nom du contact récemment créé :
adb shell content insert --uri content://com.android.contacts/data --bind raw_contact_id:i:1 --bind mimetype:s:vnd.android.cursor.item/name --bind data1:s:MY_CONTACT_NAME
Ensuite, vous remarquerez que le nouveau contact a maintenant un nom d'affichage dans l'application Contacts d'Android.
Avis comment, dans ce cas, j'ai besoin de passer la raw_contact_id
du contact dont j'essaie de définir le nom. J'ai utilisé 1
à titre d'exemple.
Vous pouvez interroger ces informations en vérifiant les données de tous les contacts :
adb shell content query --uri content://com.android.contacts/raw_contacts
Ou si vous voulez une réponse directe :
adb shell content query --uri content://com.android.contacts/raw_contacts --projection _id --where "account_name=\'MY_ACCOUNT_NAME\'"
Enfin J'ajoute l'information téléphonique :
adb shell content insert --uri content://com.android.contacts/data --bind raw_contact_id:i:1 --bind mimetype:s:vnd.android.cursor.item/phone_v2 --bind data1:s:MY_PHONE_NUMBER --bind data2:s:SOME_PHONE_TYPE --bind data3:s:SOME_LABEL
Et nous avons terminé ! Vous pouvez consulter l'application Contacts d'Android et voir un contact avec un nom d'affichage ( MY_CONTACT_NAME
) et un numéro de téléphone ( MY_PHONE_NUMBER
). Vous pouvez ajouter beaucoup d'autres informations, mais je pense que cela couvre vos besoins ou vous donne au moins une bonne idée de la façon de continuer.
Bonus : je sais que ce n'est pas exactement le sujet, mais vous pouvez même lancer un petit programme pour automatiser cette opération en utilisant les éléments suivants UiAutomator . Par exemple :
InstrumentationRegistry.getInstrumentation().getUiAutomation().executeShellCommand("content query --uri content://com.android.contacts/raw_contacts");