Android startActivityForResult一个联系人的所有电话号码
联系人可能有许多电话号码(手机、家庭等)。我想让用户能够选择一个特定联系人的电话号码 通过这段代码,我得到了每个联系人的所有电话号码列表Android startActivityForResult一个联系人的所有电话号码,android,Android,联系人可能有许多电话号码(手机、家庭等)。我想让用户能够选择一个特定联系人的电话号码 通过这段代码,我得到了每个联系人的所有电话号码列表 Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Phone.CONTENT_URI); startActivityForResult(intent, PHONE_NUMBER_PICKED); 如何仅列出一个联系人的电话号码 编辑:我知道
Intent intent = new Intent(Intent.ACTION_PICK,
ContactsContract.CommonDataKinds.Phone.CONTENT_URI);
startActivityForResult(intent, PHONE_NUMBER_PICKED);
如何仅列出一个联系人的电话号码
编辑:我知道如何获取联系人的所有电话号码,这不是重点。我可以把所有的电话号码放在一个列表视图中,让用户选择一个。但是这个功能是存在的(如上所述),我只是不想要所有的号码,只想要一个联系人的电话号码 看看这两页: 他们应该明确如何获得你想要的数据
您是否也无法显示数据?如果您想获取与联系人相关的所有电话号码,请: 1) 使用此意图打开联系人应用程序:
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);
}
}
}
}
if(requestCode==选择联系人){
if(resultCode==Activity.RESULT\u确定){
如果(数据!=null){
Uri contactData=data.getData();
试一试{
字符串id=contactData.getLastPathSegment();
游标phoneCur=getContentResolver()
.query(contacts contract.commondatatypes.Phone.CONTENT\u URI、,
无效的
Contacts contract.CommonDataTypes.Phone.CONTACT\u ID
+“=?”,新字符串[]{id},
无效);
final ArrayList phonesList=新ArrayList();
while(phoneCur.moveToNext()){
//这将允许您获得多个电话地址
//如果电话地址存储在阵列中
字符串phone=phoneCur
.getString(phoneCur)
.getColumnIndex(ContactsContract.CommonDataTypes.Phone.DATA));
电话列表。添加(电话);
}
phoneCur.close();
如果(phonesList.size()==0){
助手。展示吐司(
这
getString(R.string.error\u no\u phone\u no\u in\u contact),
吐司长度(长);
}else if(phonesList.size()==1){
editText.setText(phonesList.get(0));
}否则{
最终字符串[]phonesArr=新字符串[phonesList]
.size()];
对于(int i=0;i
这将在名为editText的编辑文本中设置所选电话号码。您可以根据需要进行更改。谢谢您的回复。请看我在问题中的编辑。请在问题中具体说明。在你的“编辑”中,你自相矛盾。你能告诉我“一个联系人的所有电话号码”和“一个联系人的电话号码”的区别吗?对不起,如果不清楚的话。对我来说都一样。我想过滤ContactsContract.CommonDataTypes.Phone.CONTENT_URI提供的列表,以便显示的列表仅包含附加到给定联系人的电话号码。我喜欢在结果中简单地使用警报对话框来获得多个联系人:-)我修改了您的代码以获得姓名和联系人图片,但它不起作用。有什么办法帮我吗?还有什么方法可以修改以显示它旁边的数字类型?你介意帮我看一下吗?