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(); } } 

  • Cómo crear objeto JSON utilizando cadena?
  • ¿Utilizando Inyección de Dependencia con Roboguice?
  • ¿Cómo agregar Apache HTTP API (legacy) como dependencia de compilación a build.grade para Android M?
  • Mercurial .hgignore para los proyectos de Android Studio
  • No se puede resolver el símbolo 'AndroidJUnit4'
  • ¿Es el modelo de memoria de Dalvik el mismo que el de Java?
  • 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.