Android,无法使用用户id检索电话号码

Android,无法使用用户id检索电话号码,android,android-cursor,phone-number,Android,Android Cursor,Phone Number,我正在尝试在选取活动中选择某个用户后检索该用户的电话号码 以下是启动活动的代码: Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Phone.CONTENT_URI); startActivityForResult(intent, Constants.COMMUNICATION_CONFIG_RESULT); 这是用于检索用户名、id和电话号码的代码,用于onActivityResu

我正在尝试在选取活动中选择某个用户后检索该用户的电话号码

以下是启动活动的代码:

Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Phone.CONTENT_URI);
startActivityForResult(intent, Constants.COMMUNICATION_CONFIG_RESULT);
这是用于检索用户名、id和电话号码的代码,用于onActivityResult:

 Uri contactData = data.getData();

 ContentResolver cr = getContentResolver();
 Cursor cursor = cr.query(contactData, null, null, null, null);
 if (cursor.moveToFirst()) {
     String contactId =
                    cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone._ID));
     String name = cursor.getString(
                    cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));

      String hasPhone =
                    cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));

      if (hasPhone.equalsIgnoreCase("1")) {

          Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,
                        ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,null, null);
          phones.moveToFirst();
          String contactNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
          Log.i("phoneNUmber", "The phone number is "+ contactNumber);

       }
  }
我总是得到用户名和id,用户总是有电话号码,但无论选择了哪个用户,光标电话总是空的


为什么我找不到电话号码?

发现了问题。它必须是:

// try this way,hope this will help you...

Intent i = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
            startActivityForResult(i, 1);
 @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        String phoneNumber = getPhoneNumber(data.getData());
        if (phoneNumber.trim().length() > 0) {
            // use this phoneNumber 
        } else {
            ting("Phone Number Not Founded ...");
        }

    }
}


 private String getPhoneNumber(Uri contactInfo) {
    String phoneNumbers = "";
    Cursor cursor = getContentResolver().query(contactInfo, null, null, null, null);
    while (cursor.moveToNext()) {
        String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
        String hashPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
        if ("1".equalsIgnoreCase(hashPhone)) {
            Cursor contactCursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId, null, null);
            while (contactCursor.moveToNext()) {
                int type = contactCursor.getInt(contactCursor.getColumnIndex(Phone.TYPE));
                if (type == Phone.TYPE_MOBILE) {
                    int colIdx = contactCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
                    phoneNumbers = phoneNumbers.concat(contactCursor.getString(colIdx));
                    break;
                }
            }
            contactCursor.close();
        }
    }
    cursor.close();
    return phoneNumbers;
}
String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID));
如果我通过以下方式查询电话号码:

Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,
                    ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,null, null);
问题是我为查询选择了不同的字段