联系人可能有许多电话号码(手机,家庭,...)。我想让用户选择一个特定联系人的电话号码。
通过此片段,我可以获得每个联系人的所有电话号码列表。
Intent intent = new Intent(Intent.ACTION_PICK,
ContactsContract.CommonDataKinds.Phone.CONTENT_URI);
startActivityForResult(intent, PHONE_NUMBER_PICKED);
如何仅列出一个联系人的电话号码?
编辑:我知道如何获取联系人的所有电话号码,这不是重点。我可以将所有电话号码放在列表视图中,让用户选择一个。但是这个功能存在(如上所述),我只是不想要所有号码,而只需要一个联系人的电话号码。
答案 0 :(得分:3)
如果您想获得与联系人相关的所有电话号码,请执行以下操作:
1)使用此意图打开联系人app:
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
startActivityForResult(intent, PICK_CONTACT);
2)在onActivityResult
中使用以下代码:
if (requestCode == PICK_CONTACT) {
if (resultCode == Activity.RESULT_OK) {
if (data != null) {
Uri contactData = data.getData();
try {
String id = contactData.getLastPathSegment();
Cursor phoneCur = getContentResolver()
.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ " = ?", new String[] { id },
null);
final ArrayList<String> phonesList = new ArrayList<String>();
while (phoneCur.moveToNext()) {
// This would allow you get several phone addresses
// if the phone addresses were stored in an array
String phone = phoneCur
.getString(phoneCur
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA));
phonesList.add(phone);
}
phoneCur.close();
if (phonesList.size() == 0) {
Helper.showToast(
this,
getString(R.string.error_no_phone_no_in_contact),
Toast.LENGTH_LONG);
} else if (phonesList.size() == 1) {
editText.setText(phonesList.get(0));
} else {
final String[] phonesArr = new String[phonesList
.size()];
for (int i = 0; i < phonesList.size(); i++) {
phonesArr[i] = phonesList.get(i);
}
AlertDialog.Builder dialog = new AlertDialog.Builder(
SendSMS.this);
dialog.setTitle(R.string.choose_phone);
((Builder) dialog).setItems(phonesArr,
new DialogInterface.OnClickListener() {
public void onClick(
DialogInterface dialog,
int which) {
String selectedEmail = phonesArr[which];
editText.setText(selectedEmail);
}
}).create();
dialog.show();
}
} catch (Exception e) {
Log.e("FILES", "Failed to get phone data", e);
}
}
}
}
这将在名为editText的编辑文本中设置所选手机号码。您可以根据需要进行更改。
答案 1 :(得分:0)
看看这两页:
http://developer.android.com/resources/articles/contacts.html
他们应该明确如何获取您想要的数据。
您是否也停留在显示数据上?