联系人姓名检索返回“Skype视频通话”

时间:2017-02-12 21:14:08

标签: android

我正在使用以下代码:

int indexContactId = people.getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID);

/*......*/

 int id = Integer.parseInt(people.getString(indexContactId));
 Cursor name_cursor = ctx.getContentResolver().query(ContactsContract.Data.CONTENT_URI, null, ContactsContract.Data.CONTACT_ID + "  = " + id, null, null);

 String first_name = "";
 String last_name = "";
 while (name_cursor.moveToNext()) {
     if (name_cursor.getString(name_cursor.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME)) != null) {
         first_name = name_cursor.getString(name_cursor.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME));
         last_name = name_cursor.getString(name_cursor.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME));
    }
 }
 name_cursor.close();

获取联系人的名字和姓氏(单独)。

除此之外,我还要检索DISPLAY_NAME

int indexName = people.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);

问题在于,对于某些联系人,我得到的值如下:

  • DISPLAY_NAME:Franck MILEN
  • FAMILY_NAME:0
  • GIVEN_NAME:Skype视频 调用

Skype通话有什么用?我该如何检索正确的MILEN名称?或至少知道忽略这些,因为Franck MILEN也会以适当的名字返回。

修改

我需要的是更好的方式来获取用户的first_namelast_namephone_number(名字和姓氏应该是分开的)而不是获取或忽略Skype视频通话事项:)

1 个答案:

答案 0 :(得分:0)

似乎我需要回答我自己的问题。这是我正在使用的代码,它似乎工作,它不再返回Skype联系人:

                int id = Integer.parseInt(people.getString(indexContactId));

            String[] projectionNames = new String[]{ContactsContract.Data.DATA2, ContactsContract.Data.DATA3};
            String where = ContactsContract.Data.CONTACT_ID + "  = " + id
                    + " AND "
                    + ContactsContract.Data.MIMETYPE + "='" + ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE + "'";
            Uri uriNames = ContactsContract.Data.CONTENT_URI;

            Cursor name_cursor = ctx.getContentResolver().query(uriNames, projectionNames, where, null, null);

            String first_name = "";
            String last_name = "";
            while (name_cursor.moveToNext()) {
                first_name = name_cursor.getString(name_cursor.getColumnIndex(ContactsContract.Data.DATA2));
                last_name = name_cursor.getString(name_cursor.getColumnIndex(ContactsContract.Data.DATA3));
            }
            name_cursor.close();
            name_cursor = null;