我正在尝试从联系人列表中获取电话号码。 我在全球范围内能够做到这一点,但我的联系人有多个电话号码有问题。
这是我的问题:
你知道为什么AVD和我的真实手机之间的行为不同吗?
以下是我如何调用意图:
Intent contactIntent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
contactIntent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
startActivityForResult(contactIntent, PICK_CONTACT);
这是我的OnActivity代码:
public void onActivityResult(int reqCode, int resultCode, Intent data) {
super.onActivityResult(reqCode, resultCode, data);
//Field to fill with the selected phone number
final EditText textPhone = (EditText) findViewById(R.id.Phone);
if (data != null) {
Uri uri = data.getData();
if (uri != null){
//Get the phone number id from the Uri
String id = uri.getLastPathSegment();
//Query the phone numbers for the selected phone number id
Cursor c = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone._ID + "=?",
new String[]{id}, null);
int phoneIdx = c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
// get the only phone number
if (c.moveToFirst()) {
textPhone.setText(c.getString(phoneIdx));
} else {
//no result
Toast noResultFound = Toast.makeText(SendLocationInfoActivity.this, "No phone number found", Toast.LENGTH_SHORT);
noResultFound.show();
}
c.close();
}
}
}
答案 0 :(得分:0)
通过使用ContactsContract.CommonDataKinds.Phone.CONTENT_URI,向用户显示联系人列表,每个电话号码一个条目。所选联系人保证有姓名和电话号码。
//Result code for contact picker
private static final int CONTACT_PICKER_RESULT = 1001;
Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,
ContactsContract.CommonDataKinds.Phone.CONTENT_URI);
startActivityForResult(contactPickerIntent, CONTACT_PICKER_RESULT);
如果您想要所有联系人,无论他们是否有电话号码,请将ContactsContract.CommonDataKinds.Phone.CONTENT_URI
替换为ContactsContract.Contacts.CONTENT_URI
。
这应该可以解决您的问题。