将联系人保存为“电话联系人”

Posted

技术标签:

【中文标题】将联系人保存为“电话联系人”【英文标题】:Save Contacts as "Phone contact" 【发布时间】:2017-12-01 15:15:33 【问题描述】:

有没有办法以编程方式将联系人作为“电话联系人”添加到内部电话通讯录?

我试过了:

list.add(ContentProviderOperation
                .newInsert(ContactsContract.RawContacts.CONTENT_URI)
                .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)
                .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null)
                .build());

使用此参数联系人成功保存到手机,但如果我将过滤器设置为“仅显示手机联系人” - 创建的联系人不会出现。顺便说一句,我读到 null 类型的联系人可能会丢失干燥帐户同步(不记得完整的案​​例)

然后我尝试从现有电话联系人中检索 ACCOUNT_TYPEACCOUNT_NAME 并获取 PhoneLocal Phone Account 字符串,但是当我尝试使用相同参数保存联系人时:

list.add(ContentProviderOperation
                .newInsert(ContactsContract.RawContacts.CONTENT_URI)
                .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, "Phone")
                .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, "Local Phone Account")
                .build());

结果与null类型的第一种情况相同。

是否有任何常量(或者应该是另一种方式)来保存“电话联系人”之类的数据?

【问题讨论】:

【参考方案1】:

普通android不完全支持“phone only”帐户,它通常由设备制造商添加(或解锁)。

这是我知道的,如果您发现更多,请随时添加。 格式为<maker>:ACCOUNT_TYPE,ACCOUNT_NAME

    三星:“vnd.sec.contact.phone:”vnd.sec.contact.phone“ htc: "com.htc.android.pcsc: "pcsc" sony: "com.sonyericsson.localcontacts: "电话联系人" lge: "com.lge.sync: "电话" lge(选项 2):“com.lge.phone” t-mobile: "vnd.tmobileus.contact.phone: "MobileLife 联系人" huawei: "com.android.huawei.phone: "电话" 联想:“本地电话帐户:“电话” 小米:“com.xiaomi” oppo:“com.oppo.contacts.device”

【讨论】:

我假设 lge 的第二个选项的 ACCOUNT_NAME 也是“电话”,对吧?

以上是关于将联系人保存为“电话联系人”的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 xmpp 框架和 openfire 服务器将电话簿联系人添加到 ios 中的聊天应用程序?

交换活动时保存和加载联系人

检索所有电话联系人,无论他们的组

如何将现有联系人添加到“电话联系人”帐户

java - 如何使用json中提供的多个联系人数据在java中的android中添加新的电话联系人

从电话联系人中获取姓名、电话号码和电子邮件地址[关闭]