首页 > 解决方案 > 如何通过带有 LOOKUP_KEY 的 Uri 使用投影检索联系人号码?

问题描述

我正在尝试使用以下代码获取联系人姓名及其电话号码:

String id = readFile("contactlookupkey");
Uri uri = Uri.parse (ContactsContract.Contacts.CONTENT_LOOKUP_URI + "/" + id);

  String[] projection = new String[] {
    Contacts._ID,
    Contacts.DISPLAY_NAME,
    ContactsContract.CommonDataKinds.Phone.NUMBER
  };

  Cursor cursor = context.getContentResolver().query (
    uri,
    projection,
    null,
    null,
    null);

  if (!cursor.moveToNext()) // move to first (and only) row.
    throw new IllegalStateException ("contact no longer exists for key");
  String name = cursor.getString(1);
  String phone=cursor.getString(2);
  cursor.close();

但是由于 ContactsContract.CommonDataKinds.Phone.NUMBER,在执行查询时出现非法参数异常。

问题是我没有看到任何其他方式来获取电话号码,同时仍然使用 URI+loopkey。

可以做些什么来获取电话号码?

标签: androidurilookup

解决方案


您是否使用了正确的 URI?

尝试切换:

ContactsContract.Contacts.CONTENT_LOOKUP_URI 

ContactsContract.CommonDataKinds.Phone.CONTENT_URI

推荐阅读