答案 0 :(得分:7)
Google工作提供的示例代码。只是当它在模拟器上运行时,找不到任何帐户或组来附加创建的联系人。默认情况下,此新创建的联系人不可见。
使用实际的手机(对于我的情况,HTC Dream),在检测到要输入代码的帐户名称和类型后,它可以正常工作。或者,我们可以获得可见的组ID,并将新联系人附加到其中一个组。
获取可用帐户:
//accounts
Account[] accounts = AccountManager.get(act).getAccounts();
for (Account acc : accounts){
Log.d(TAG, "account name = " + acc.name + ", type = " + acc.type);
}
获取群组列表:
//group membership info
String[] tempFields = new String[] {
GroupMembership.GROUP_ROW_ID, GroupMembership.GROUP_SOURCE_ID};
Cursor tempCur = act.managedQuery(Data.CONTENT_URI, tempFields,
Data.MIMETYPE + "='" + GroupMembership.CONTENT_ITEM_TYPE + "'",
null, null);
现在,如果我们想将新联系人与群组而不是帐户相关联:
ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI)
.withValueBackReference(Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE, GroupMembership.CONTENT_ITEM_TYPE)
.withValue(GroupMembership.GROUP_SOURCE_ID, *<THE_IDENTIFIED_GROUP_ID>*)
.build());
希望它有所帮助。
答案 1 :(得分:5)
要在模拟器中添加没有组或帐户的帐户,只需将“null”作为您的帐户或组ID,替换此行代码
ops.add(ContentProviderOperation
.newInsert(ContactsContract.RawContacts.CONTENT_URI)
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null)
.build());
答案 2 :(得分:0)
您是否尝试将群组的展示次数设置为true?
在“联系人”选项卡中按菜单按钮,而不是“显示选项”&gt;您的帐户,然后选中复选框和“完成”。
答案 3 :(得分:0)
HTC Sense和MOTOBLUR可能会对联系人造成问题。我不知道这里的任何信息(http://stackoverflow.com/questions/4431101/created-contacts-not-showing-up-on-htc-evo)是否有用。