android– 使用ContactsContract创建的新联系人不会出现在“联系人”应用中

android– 使用ContactsContract创建的新联系人不会出现在“联系人”应用中,第1张

概述我正在使用以下代码来创建联系人.它紧跟Android提供的ContactManager示例.问题是,创建的联系人不会出现在Android附带的“联系人”应用中.然而,当我从电话簿加载所有联系人时,我可以看到新创建的联系人.privatevoidinsertPBEntry()    抛出RemoteException,OperationAppl

我正在使用以下代码来创建新联系人.它紧跟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创建的新联系人不会出现在“联系人”应用中所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1102520.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存