Android-使用ContactPicker获取号码和姓氏?

Android-使用ContactPicker获取号码和姓氏?,android,contacts,Android,Contacts,使用ContactPicker获取联系人的电话号码和显示名称似乎很简单-使用类似的方式 Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Phone.CONTENT_URI); startActivityForResult(intent, REQUEST_PICK_CONTACT); 然而,通过这个你可以得到电话号码和显示名,但我似乎找不到任何合理的方法来获得我的姓/名,一旦我得到了

使用ContactPicker获取联系人的电话号码和显示名称似乎很简单-使用类似的方式

Intent intent = new Intent(Intent.ACTION_PICK, 
ContactsContract.CommonDataKinds.Phone.CONTENT_URI);
startActivityForResult(intent, REQUEST_PICK_CONTACT);

然而,通过这个你可以得到电话号码和显示名,但我似乎找不到任何合理的方法来获得我的姓/名,一旦我得到了号码。从startActivityForResult返回的内容似乎无法使用联系人本身的ID。我想你可以根据显示的姓名或号码重新查询以找到联系人,但这似乎很尴尬。。。我只是想有一种更简单的方法,但这里可能是错误的。

联系人选择器为请求的联系人返回一个URI。你需要重新查询这个URI,你可以得到你想要的任何东西

@Override
public void onActivityResult(int reqCode, int resultCode, Intent data) {
  super.onActivityResult(reqCode, resultCode, data);

  switch (reqCode) {
    case (PICK_CONTACT) :
      if (resultCode == Activity.RESULT_OK) {
        Uri contactData = data.getData();
        Cursor c =  getContentResolver().query(contactData, null, null, null, null);
        if (c.moveToFirst()) {
         // TODO Whatever you want to do with the selected contact
        }
      }
      break;
  }
}

谢谢-我假设它会返回一些特殊的电话号码,因为它的目的是启动phone.CONTENT\u URI。在本例中,选择器显示每个联系人的所有号码(并且仅显示具有电话号码的联系人),我假设data.getData()调用中的ID与电话号码关联,而不是联系人ID。如果您使用更通用的contacts.CONTENT_URI来代替此目的,选择器将显示所有联系人,不管他们是否有号码(这不是我感兴趣的)。我会根据你所说的重新检查这里的一些东西。