【发布时间】:2016-03-04 14:42:10
【问题描述】:
我正在添加联系人
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 帐户选择中(而在第一个插入号码时已添加到该列表中) - 也(显然?)他们停止选择方式(只选择已删除的实体):
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 上找不到。
【问题讨论】:
标签: java android android-contacts whatsapp contactscontract