Android 联系人-如何区分SIM卡、手机和其他联系人?
我正在通过手机读取所有联系人,如下所示:Android 联系人-如何区分SIM卡、手机和其他联系人?,android,android-contacts,contactscontract,Android,Android Contacts,Contactscontract,我正在通过手机读取所有联系人,如下所示: Cursor cursor = MainApp.get().getContentResolver().query( ContactsContract.Data.CONTENT_URI, null, null, null, ContactsContract.D
Cursor cursor = MainApp.get().getContentResolver().query(
ContactsContract.Data.CONTENT_URI,
null,
null,
null,
ContactsContract.Data.CONTACT_ID + " ASC");
我从联系人中读取contacts contract.Data.ACCOUNT\u TYPE\u和\u Data\u SET
和contacts contract.raw contacts.ACCOUNT\u NAME
,并对其进行分析,因为我想区分手机、sim卡和任何其他联系人。。。但我只能看到这些值是非常特定于手机的
1)我目前只知道联系人contract.Data.ACCOUNT\u TYPE\u和\u Data\u SET的以下值
:
- 电话联系方式
com.sonyericsson.localcontacts(索尼Xperia S)
vnd.sec.contact.phone(三星Galaxy Alpha)
- SIM卡联系人
com.sonyericsson.adn联系人(索尼Xperia S)
vnd.sec.contact.sim(三星Galaxy Alpha)
- 电话联系方式
(索尼Xperia S)电话联系人
- 空(三星Galaxy Alpha)
- SIM卡联系人
(索尼Xperia S)SIM卡联系人
(三星Galaxy Alpha)primary.sim.account\u name
或者有人知道更好的解决方案吗?要从SIM卡获取联系人,请使用以下选项:
Uri simUri = Uri.parse("content://icc/adn");
Cursor cursorSim = this.getContentResolver().query(simUri, null, null,null, null);
while (cursorSim.moveToNext()) {
listName. add(cursorSim.getString(cursorSim.getColumnIndex("name")));
listContactId. add(cursorSim.getString(cursorSim.getColumnIndex("_id")));
listMobileNo. add(cursorSim.getString(cursorSim.getColumnIndex("number")));
}
姓名、_id、号码是SIM contacts表中的字段
和用于电话使用的联系人
Cursor cursor = mContentResolver.query(
RawContacts.CONTENT_URI,
new String[]{RawContacts._ID,RawContacts.ACCOUNT_TYPE},
RawContacts.ACCOUNT_TYPE + " <> 'com.anddroid.contacts.sim' "
+ " AND " + RawContacts.ACCOUNT_TYPE + " <> 'com.google' " //if you don't want to google contacts also
,
null,
null);
Cursor Cursor=mContentResolver.query(
rawscontacts.CONTENT_URI,
新字符串[]{RawContacts.\u ID,RawContacts.ACCOUNT\u TYPE},
rawscontacts.ACCOUNT_TYPE+“'com.anddroid.contacts.sim'”
+“和”+rawscontacts.ACCOUNT_TYPE+“'com.google'//如果您不想同时搜索联系人
,
无效的
无效);
第二部分:SIM卡联系人似乎并不总是被命名为com.anddroid.contacts.SIM。我还必须排除谷歌等所有其他账户,如whatsapp、viber等(可能,但我不知道所有创建联系人的应用程序,每个开发人员都可以将联系人保存在手机中),是否可以在其账户类型字段中获取SIM卡和本地联系人的信息?