我正在使用以下代码来创建新联系人.它紧跟Android提供的ContactManager示例.
问题是,创建的联系人不会出现在AndroID附带的“联系人”应用中.然而,当我从电话簿加载所有联系人时,我可以看到新创建的联系人.
private voID 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);}
我努力搜索但尚未找到答案.我找到了一个答案,表明问题可能与我的字符串“帐户类型”和“帐户名称”有关.就我而言,我不需要创建任何帐户.我想要的是添加一个新的联系人姓名,电子邮件/邮件地址,电话.
多谢你们!
解决方法:
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());
希望能帮助到你.
总结以上是内存溢出为你收集整理的android – 使用ContactsContract创建的新联系人不会出现在“联系人”应用中全部内容,希望文章能够帮你解决android – 使用ContactsContract创建的新联系人不会出现在“联系人”应用中所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)