2015-10-28 3 views
2

Я хочу, чтобы мое приложение приложения Android было добавлено в существующий контакт. Я отправляю все контакты телефонной книги на сервер (с именем, номером телефона и контактным ID), чтобы проверить, какие контакты зарегистрированы для моего приложения. Я отправлю обратно клиентскому приложению идентификаторы контактов, которые соответствуют.Как добавить подключения приложений к существующему контакту, например, WhatsApp и Viber?

Теперь я хочу добавить подключение к этим контактам в своей телефонной книге на основе возвращенных идентификаторов.

Как добавить соединение приложения, отредактировав контакт на основе одного из возвращенных идентификаторов контактов?

Благодаря

ответ

1

Попробуйте с этим кодом, это даст вам желаемый результат

public static void addContact(Context context, MyContact contact) { 
    ContentResolver resolver = context.getContentResolver(); 
    // add condition that you want to check 
    String where= RawContacts.ACCOUNT_TYPE + " = ? AND " +RawContacts.DISPLAY_NAME_PRIMARY+"=?"; 
    //values of that condotion 
    String[] value=new String[] { AccountGeneral.ACCOUNT_TYPE ,contact.name}; 
    resolver.delete(RawContacts.CONTENT_URI, where, value); 

    ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); 

    ops.add(ContentProviderOperation.newInsert(addCallerIsSyncAdapterParameter(RawContacts.CONTENT_URI, true)) 
      .withValue(RawContacts.ACCOUNT_NAME, AccountGeneral.ACCOUNT_NAME) 
      .withValue(RawContacts.ACCOUNT_TYPE, AccountGeneral.ACCOUNT_TYPE) 
      //.withValue(RawContacts.SOURCE_ID, 12345) 
      //.withValue(RawContacts.AGGREGATION_MODE, RawContacts.AGGREGATION_MODE_DISABLED) 
      .build()); 

    ops.add(ContentProviderOperation.newInsert(addCallerIsSyncAdapterParameter(Settings.CONTENT_URI, true)) 
      .withValue(RawContacts.ACCOUNT_NAME, AccountGeneral.ACCOUNT_NAME) 
      .withValue(RawContacts.ACCOUNT_TYPE, AccountGeneral.ACCOUNT_TYPE) 
      .withValue(Settings.UNGROUPED_VISIBLE, 1) 
      .build()); 

    ops.add(ContentProviderOperation.newInsert(addCallerIsSyncAdapterParameter(Data.CONTENT_URI, true)) 
      .withValueBackReference(Data.RAW_CONTACT_ID, 0) 
      .withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE) 
      .withValue(StructuredName.GIVEN_NAME, contact.name) 
      .withValue(StructuredName.FAMILY_NAME, contact.lastName) 
      .build()); 

    ops.add(ContentProviderOperation.newInsert(addCallerIsSyncAdapterParameter(Data.CONTENT_URI, true)) 
      .withValueBackReference(Data.RAW_CONTACT_ID, 0) 
      .withValue(ContactsContract.Data.MIMETYPE,ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE) 
      .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, "12342145") 

      .build()); 


    ops.add(ContentProviderOperation.newInsert(addCallerIsSyncAdapterParameter(Data.CONTENT_URI, true)) 
      .withValueBackReference(Data.RAW_CONTACT_ID, 0) 
      .withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE) 
      .withValue(ContactsContract.CommonDataKinds.Email.DATA, "[email protected]") 
      .build());  


    ops.add(ContentProviderOperation.newInsert(addCallerIsSyncAdapterParameter(Data.CONTENT_URI, true)) 
      .withValueBackReference(Data.RAW_CONTACT_ID, 0) 
      .withValue(Data.MIMETYPE, MIMETYPE) 
      .withValue(Data.DATA1, 12345) 
      .withValue(Data.DATA2, "sample") 
      .withValue(Data.DATA3, "sample") 
      .build()); 
    try { 
     ContentProviderResult[] results = resolver.applyBatch(ContactsContract.AUTHORITY, ops); 
     i++; 
     if (results.length == 0) 
      ; 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
+0

Что MyContact CLAS здесь? –

+0

@ chaman-saini этот ответ является дубликатом этого https://stackoverflow.com/questions/31319918/how-to-add-my-apps-connection-in-phonebook-contacts-as-whatsapp-and-viber-does ? RQ = 1 –