Me encontré con la necesidad de hacer precisamente eso. Así es como me las arreglé para hacer el trabajo.
Primero , creo un contacto en bruto haciendo:
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
Esto creará efectivamente un nuevo contacto (podrá ver un nuevo contacto en la aplicación Contacto de Android) pero sin información adicional (teléfono, nombre, correo electrónico, etc...)
Siguiente , añado la información del nombre al contacto recién creado:
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
Después de esto, notarás cómo el nuevo contacto tiene ahora un nombre para mostrar en la aplicación Contactos de Android.
Aviso cómo, en este caso, necesito pasar el raw_contact_id
del contacto para el que estoy tratando de establecer el nombre. He utilizado 1
sólo como ejemplo.
Puede consultar esta información comprobando los datos de todos los contactos:
adb shell content query --uri content://com.android.contacts/raw_contacts
O si quieres la respuesta directa:
adb shell content query --uri content://com.android.contacts/raw_contacts --projection _id --where "account_name=\'MY_ACCOUNT_NAME\'"
Finalmente , añado la información del teléfono:
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
¡Y ya hemos terminado! Puedes comprobar la aplicación Contactos de Android y ver un contacto con un nombre para mostrar ( MY_CONTACT_NAME
) y un número de teléfono ( MY_PHONE_NUMBER
). Hay mucha más información que puedes añadir, pero supongo que esto cubre tus necesidades o al menos te da una buena idea de cómo continuar.
Bonificación: Sé que no es exactamente el tema, pero incluso se puede ejecutar un pequeño programa para automatizar esto usando UiAutomator . Por ejemplo:
InstrumentationRegistry.getInstrumentation().getUiAutomation().executeShellCommand("content query --uri content://com.android.contacts/raw_contacts");