联系人-如何区分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_SETContactsContract.RawContacts.ACCOUNT_NAME并分析它们,因为我想区分电话,sim卡和任何其他联系人…但是我只能看到这些值是非常特定于手机的。

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)
    • 空(三星Galaxy Alpha)
  • SIM联系人

    • SIM contacts (Sony Xperia S)
    • primary.sim.account_name (Samsung Galaxy Alpha)

谷歌,WhatsApp, Viber联系人很容易识别,但如何找出它的联系人是一个电话联系人或sim卡联系人在所有的手机(或至少在大多数)?

我不想显示"vnd.sec.contact "。

有人知道我的列表的其他字符串吗?或者有人知道更好的解决方案吗?

从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")));
        }

name, _id, number是SIM联系人表中的字段

电话联系人使用

   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);

相关内容

  • 没有找到相关文章

最新更新