将通讯录另存为“电话联系人”

Sia*_*hei 1 android contactscontract rawcontacts android-contacts

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

我试过了:

list.add(ContentProviderOperation
                .newInsert(ContactsContract.RawContacts.CONTENT_URI)
                .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)
                .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null)
                .build());
Run Code Online (Sandbox Code Playgroud)

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

然后我尝试从现有的电话联系人中检索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());
Run Code Online (Sandbox Code Playgroud)

结果与nulltype的第一种情况相同。

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

mar*_*mor 5

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

以上是我所知道的,如果你发现更多,请随意添加更多。
格式为<maker>ACCOUNT_TYPE,ACCOUNT_NAME

  1. 三星:“vnd.sec.contact.phone:”vnd.sec.contact.phone”
  2. htc: "com.htc.android.pcsc: "pcsc"
  3. 索尼:“com.sonyericsson.localcontacts:”电话联系人“
  4. lge: "com.lge.sync: "电话"
  5. lge(选项 2):“com.lge.phone”
  6. t-mobile: "vnd.tmobileus.contact.phone: "MobileLife Contacts"
  7. huawei: "com.android.huawei.phone: "电话"
  8. 联想:“本地电话帐户:”电话“
  9. 小米:“com.xiaomi”
  10. oppo:“com.oppo.contacts.device”