我正在使用以下代码段来创建新联系人。它紧随Android提供的ContactManager示例。 问题是,创建的联系人不会显示在Android附带的Contacts应用程序中。不过,当我加载电话簿中的所有联系人时,我可以看到新创建的联系人。使用ContactsContract创建的新联系人不会显示在联系人应用程序中
私人无效insertPBEntry() 将抛出RemoteException,OperationApplicationException {
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, "Account type")
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, "Account name")
.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.DISPLAY_NAME, "TOTAL_NEW")
.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, "9090")
.withValue(ContactsContract.CommonDataKinds.Phone.TYPE,Phone.TYPE_MOBILE)
.build());
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
}
我搜索很难,但还没有找到答案。我找到了一个答案,表明问题可能与我的字符串“账户类型”和“账户名称”有关。对于我的情况,我不需要创建任何帐户。我只需要添加一个名称,电子邮件/邮件地址,电话的新联系人。
谢谢,伙计们!
所有联系人都必须插入帐户下。进一步调查。 – Pentium10 2010-07-26 17:33:44
经过进一步调查,我发现这个:http://osdir.com/ml/Android-Developers/2010-05/msg03859.html 因此,使用上述代码创建的联系人未显示可能是因为他们不'对于开启可视性的组,将会很长。因此,一切都归结为在使用其界面时找到在“通讯录”应用程序中创建的联系人的组ID。 我试图从ContactsContracts.Groups中获取所有组并获得ZERO组。同样,从GroupMembership获取数据将返回ZERO组成员资格。有趣!让我们看看如何... – 2010-07-27 15:36:27