2016-03-04 2 views
2

Я добавляю контакты сAndroid удалены rawcontacts вновь появляются и WhatsApp контакты не apprear

ops.add(ContentProviderOperation.newInsert(
    ContactsContract.RawContacts.CONTENT_URI) 
    .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null) 
    .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null) 
    .build()); 

ops.add(ContentProviderOperation.newInsert(
    ContactsContract.Data.CONTENT_URI) 
    .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) 
    .withValue(ContactsContract.Data.MIMETYPE, 
      ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE) 
    .withValue(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME, contactName) 
    .build()); 

ops.add(ContentProviderOperation.newInsert(
    ContactsContract.Data.CONTENT_URI) 
    .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0) 
    .withValue(ContactsContract.Data.MIMETYPE, 
      ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE) 
    .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, newPhone) 
    .build()); 

, а позже удалить их с

ops.add(ContentProviderOperation.newDelete(ContactsContract.RawContacts.CONTENT_URI) 
    .withSelection(ContactsContract.RawContacts._ID + "=?", new String[]{idRawContact}).build()); 

При отладке я обнаружил две проблемы, как я переустановите же удаленное имя + номер:

1) «Стандартное» приложение для контактов с телефоном начинает перечислять несколько одинаковых записей для каждого.

2) номера, у которых есть учетная запись WhatsApp, отображаются в приложении WhatsApp, однако они не входят в выбор учетной записи телефона для контактов WhatsApp (в то время как во время первого номера вставки было добавлено в этот список) - также (очевидно?) Они останавливаются должен быть выбран с помощью (только удаленные enties выбраны):

Cursor curRawContacts = contentResolver.query(ContactsContract.RawContacts.CONTENT_URI, null, 
    ContactsContract.RawContacts.ACCOUNT_TYPE + " = ? ", new String[]{"com.whatsapp"}, null); 

Пожалуйста, советы, если что-то можно сделать, чтобы исправить это - возможно удаление данных из таблиц кроме rawcontacts? Могут ли записи из rawcontacts быть окончательно удалены (не только установка ContactsContract.RawContacts.CONTACT_ID = null)?

Кроме того, какое приложение управления контактами может выбирать записи по учетным записям/типам (google, whatsapp, sim1 и т. Д.) - у одного из моих телефонов есть такой, другие нет, и я не смог найти их в Google Play.

ответ

1

вам нужно использовать

ContactsContract.RawContacts.CONTENT_URI.buildUpon().appendQueryParameter(ContactsContract.CALLER_IS_SYNCADAPTER, "true").build() 

Вместо того

ContactsContract.RawContacts.CONTENT_URI 
Смежные вопросы