查找联系人Android时出错

时间:2017-07-11 20:09:57

标签: java android android-contacts

当我想访问特定联系人时,我收到错误。

  

java.lang.IllegalArgumentException:无效的列contact_id

以下是示例代码:

String number = "0877777777";
                Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number));
                String[] projection = new String[]{ ContactsContract.PhoneLookup.CONTACT_ID };

                Cursor cur = getActivity().getContentResolver().query(uri, projection, null, null, null);

                // if other contacts have that phone as well, we simply take the first contact found.
                if (cur != null && cur.moveToNext()) {
                    Long id = cur.getLong(0);

                    Intent intent = new Intent(Intent.ACTION_VIEW);
                    Uri contactUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_URI, String.valueOf(id));
                    intent.setData(contactUri);
                    startActivity(intent);

                    cur.close();
                }

错误在投影中,但我不确定如何修复它。 号码保存在被测电话上。 任何有关解决问题的建议都会受到高度赞赏。

2 个答案:

答案 0 :(得分:1)

只需将ContactsContract.PhoneLookup.CONTACT_ID更改为ContactsContract.PhoneLookup._ID

_ID中的PhoneLookup仅表示CONTACT_ID

见这里:https://developer.android.com/reference/android/provider/ContactsContract.PhoneLookup.html

答案 1 :(得分:0)

使用ContactsContract.CommonDataKinds.Phone.CONTENT_URI代替ContactsContract.PhoneLookup.CONTACT_ID