Save Contacts as “Phone contact”

2020-03-30 08:54发布

Is there way to programmatically adds the contact to the internal phone contacts book as a "phone contact"?

I've tried:

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

with this parameters contact successfully saves to the phone, but in case i set up filter to "display phone contacts only" - created contact not appears. btw, i've read that contacts with null type can be loses drying accounts synchronization (haven't remember the full case)

then i tried to retrieve ACCOUNT_TYPE and ACCOUNT_NAME from existing phone contact and gets Phone and Local Phone Account strings, but when i tried to save contact with same parameters:

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

the result was the same to the first case with null type.

is there any constants (or it should be another way) to save data like "phone contact"?

1条回答
狗以群分
2楼-- · 2020-03-30 09:30

The "phone only" account is not fully supported by plain Android, it's usually added (or unlocked) by device makers.

Here are the ones I know of, feel free to add more in case you find more.
The format is <maker>: ACCOUNT_TYPE, ACCOUNT_NAME

  1. samsung: "vnd.sec.contact.phone: "vnd.sec.contact.phone"
  2. htc: "com.htc.android.pcsc: "pcsc"
  3. sony: "com.sonyericsson.localcontacts: "Phone contacts"
  4. lge: "com.lge.sync: "Phone"
  5. lge (option 2): "com.lge.phone"
  6. t-mobile: "vnd.tmobileus.contact.phone: "MobileLife Contacts"
  7. huawei: "com.android.huawei.phone: "Phone"
  8. lenovo: "Local Phone Account: "Phone"
查看更多
登录 后发表回答