没有分配给联系人的号码

时间:2015-01-06 11:37:26

标签: android contacts

我找到了这个循环联系人的解决方案:

Cursor people = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
    while(people.moveToNext()) {
                int nameFieldColumnIndex = people.getColumnIndex(ContactsContract.PhoneLookup.DISPLAY_NAME);
                String contact = people.getString(nameFieldColumnIndex);
                int numberFieldColumnIndex = people.getColumnIndex(ContactsContract.PhoneLookup.NUMBER);
                if (numberFieldColumnIndex >= 0) {
                    String number = people.getString(numberFieldColumnIndex);
                }
            }

    people.close();

String contact = people.getString(nameFieldColumnIndex);工作正常,它会存储我的所有联系人姓名,但int numberFieldColumnIndex = people.getColumnIndex(ContactsContract.PhoneLookup.NUMBER);始终为-1。你能告诉我问题在哪里吗?谢谢:))

1 个答案:

答案 0 :(得分:0)

正确获取联系人名称只是一种合作关系..因为 ContactsContract.PhoneLookup.DISPLAY_NAME 的值是“display_name”,它存在于结果集中。

ContactsContract.PhoneLookup.NUMBER 是使用ContactsContract.Contacts.CONTENT_URI

查询后得到的结果集中不存在的“数字”

您可以先使用以下代码检查它将返回哪些列。

        if(people!=null){
        String[] colNames = people.getColumnNames();

        for(int i=0;i<colNames.length;i++)
            Log.i("",colNames[i]);
        }

也可以通过移动光标来检查 PhoneLookup 的文档(使用intellij :))

顺便说一下:

*表示查找电话号码的结果的表格,例如来电者ID。至  执行查找时,您必须将要查找的号码附加到CONTENT_FILTER_URI。这个查询  高度优化。  Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI,Uri.encode(phoneNumber));  resolver.query(uri,new String [] {PhoneLookup.DISPLAY_NAME,...

<强>列 PhoneLookup String NUMBER只读电话号码。 String TYPE只读电话号码类型。  请参阅CommonDataKinds.Phone。 String LABEL只读电话号码的自定义标签。看到  CommonDataKinds.Phone。 Contacts表中的列也可通过连接获得。加入联系人长_ID阅读 -  只有联系人ID。 String LOOKUP_KEY只读请参阅ContactsContract.Contacts String  DISPLAY_NAME只读请参阅ContactsContract.Contacts long PHOTO_ID只读请参阅  ContactsContract.Contacts。 int IN_VISIBLE_GROUP只读请参阅ContactsContract.Contacts。 INT  HAS_PHONE_NUMBER只读请参阅ContactsContract.Contacts。 int TIMES_CONTACTED只读  请参阅ContactsContract.Contacts。 long LAST_TIME_CONTACTED只读请参阅  ContactsContract.Contacts。 int STARRED只读请参阅ContactsContract.Contacts。串  CUSTOM_RINGTONE只读请参阅ContactsContract.Contacts。 int SEND_TO_VOICEMAIL只读  请参阅ContactsContract.Contacts。*