Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Agregue RawContact para agregarlo a un contacto existente

Estoy intentando agregar un nuevo RawContact a un contacto existente así que mi campo de los datos de encargo aparece dentro del contacto original. Intenté agregar una fila de los datos de StructuredName a mi nuevo RawContact con un DisplayName que coincida con el DisplayName del RawContact original. Pensé que coincidir con DisplayNames sería suficiente para agregar tanto RawContacts, pero la aplicación de contactos parece mostrar tanto RawContacts como diferentes contactos.

Aquí está mi código

public static void addContact(Context context, Account account, String number, String displayname) { Log.e(Global.TAG, "adding contact: " + number + " / " + displayname); ArrayList<ContentProviderOperation> operationList = new ArrayList<ContentProviderOperation>(); //Create our RawContact ContentProviderOperation.Builder builder = ContentProviderOperation.newInsert(RawContacts.CONTENT_URI); builder.withValue(RawContacts.ACCOUNT_NAME, account.name); builder.withValue(RawContacts.ACCOUNT_TYPE, account.type); operationList.add(builder.build()); //Create a Data record of common type 'StructuredName' for our RawContact builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI); builder.withValueBackReference(ContactsContract.CommonDataKinds.StructuredName.RAW_CONTACT_ID, 0); builder.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE); builder.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, displayname); operationList.add(builder.build()); //Create a Data record of custom type "vnd.android.cursor.item/vnd.be.ourservice.profile" to display a link to the profile builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI); builder.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0); builder.withValue(ContactsContract.Data.MIMETYPE, "vnd.android.cursor.item/vnd.be.ourservice.profile"); builder.withValue(ContactsContract.Data.DATA1, number); builder.withValue(ContactsContract.Data.DATA2, "ourservice user"); builder.withValue(ContactsContract.Data.DATA3, "Go to ourservice profile"); operationList.add(builder.build()); try { mContentResolver.applyBatch(ContactsContract.AUTHORITY, operationList); Log.d(Global.TAG, "addContact batch applied"); } catch (Exception e) { Log.e(Global.TAG, "Something went wrong during creation! " + e); e.printStackTrace(); } } 

  • Cuando se utiliza el modo de inmersión con diálogos, nav. Barra reaparece y cambia de tamaño mi diseño
  • Cómo comprobar la conexión a Internet está disponible o no en android
  • ADT 22: falta de aapt.exe después de actualizar
  • Cómo probar la actualización de la base de datos sqlite antes de cargar la nueva versión de mi aplicación en la tienda de juegos en android
  • Android Nexus 5.0 Crash Señal fatal 11 (SIGSEGV), código 1 0x999e000c
  • Android: ¿Qué debo hacer en lugar de usar una función obsoleta (getwidth ())?
  • One Solution collect form web for “Agregue RawContact para agregarlo a un contacto existente”

    Me lo imaginé. Intenté substituir la fila de CommonDataKinds.StructuredName con una fila de CommonDataKinds.Phone que contiene el mismo número que mi contacto original y agrega el RawContacts correctamente.

    El código de trabajo se ve así

     public static void addContactTag(Context context, Account account, String number) { ArrayList<ContentProviderOperation> operationList = new ArrayList<ContentProviderOperation>(); // Create our RawContact ContentProviderOperation.Builder builder = ContentProviderOperation.newInsert(RawContacts.CONTENT_URI); builder.withValue(RawContacts.ACCOUNT_NAME, account.name); builder.withValue(RawContacts.ACCOUNT_TYPE, account.type); operationList.add(builder.build()); // Create a Data record of common type 'Phone' for our RawContact builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI); builder.withValueBackReference(Data.RAW_CONTACT_ID, 0); builder.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE); builder.withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, number); operationList.add(builder.build()); //Create a Data record of custom type "vnd.android.cursor.item/vnd.be.ourservice.profile" to display a link to our profile builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI); builder.withValueBackReference(Data.RAW_CONTACT_ID, 0); builder.withValue(ContactsContract.Data.MIMETYPE, OURSERVICE_MIMETYPE); builder.withValue(ContactsContract.Data.DATA1, number); builder.withValue(ContactsContract.Data.DATA2, "ourservice user"); builder.withValue(ContactsContract.Data.DATA3, "Go to ourservice profile"); operationList.add(builder.build()); try { mContentResolver.applyBatch(ContactsContract.AUTHORITY, operationList); Log.d(Global.TAG, "addContact batch applied"); } catch (Exception e) { Log.e(Global.TAG, "Something went wrong during creation! " + e); e.printStackTrace(); } } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.