Я читаю все контакты из телефона, как следующее:Контакты - как различать SIM-карту, телефон и другие контакты?
Cursor cursor = MainApp.get().getContentResolver().query(
ContactsContract.Data.CONTENT_URI,
null,
null,
null,
ContactsContract.Data.CONTACT_ID + " ASC");
Я прочитал ContactsContract.Data.ACCOUNT_TYPE_AND_DATA_SET
и ContactsContract.RawContacts.ACCOUNT_NAME
от контактов и анализировал их, потому что я хочу, чтобы различать телефон, сим и любой другой контакт ... Но я только видно, что значения очень специфичны для телефона.
1) В настоящее время я знаю только следующие значения для ContactsContract.Data.ACCOUNT_TYPE_AND_DATA_SET
:
телефон контакты
com.sonyericsson.localcontacts (Sony Xperia S)
vnd.sec.contact.phone (Samsung Galaxy Alpha)
SIM контакты
com.sonyericsson.adncontacts (Sony Xperia S)
vnd.sec.contact.sim (Samsung Galaxy Alpha)
2) В настоящее время я только знаю следующие значения: ContactsContract.Data.ACCOUNT_NAME
Телефонные контакты
Phone contacts
(Sony Xperia S)- EMPTY (Samsung Galaxy альфа)
SIM контакты
SIM contacts
(Sony Xperia S)primary.sim.account_name
(Samsung Galaxy Альфа)
Google, WhatsApp, контакты Viber легко распознаются, но как узнать его контакт - это телефонный контакт или сим-контакт на всех телефонах (или, по крайней мере, на большинстве)?
Я не хочу отображать «vnd.sec.contact.sim» для сим-контактов, но вместо этого вы хотите отобразить «SIM».
Кто-нибудь знает другие строки для моего списка? Или кто-нибудь знает лучшее решение?
Для второго part: контакты SIM-карты не всегда называются 'com.anddroid.contacts.sim'. И мне пришлось бы исключать все другие учетные записи, такие как google, например whatsapp, viber и т. Д. (Возможно, но я не знаю, все приложения, которые создают контакты, и каждый разработчик может сохранять свои контакты в телефоне) – prom85
можно узнать, как должны иметь место SIM-карты и локальные контакты в поле ACCOUNT_TYPE? –