【发布时间】:2016-08-17 10:26:51
【问题描述】:
我知道这是一个常见问题,因为我找到了很多关于它的答案,但我仍然有一个关于电话号码检索的问题。
我想从 PICK_CONTACT 活动中挑选的一个联系人获取所有号码。
这是我的 onActivityResult() 代码块
@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) {
ArrayList<String> allContacts = new ArrayList<String>();
Uri contactData = data.getData();
Cursor c = getContentResolver().query(contactData, null, null, null, null);
while (c.moveToNext()) {
String contact_id = c.getString(c.getColumnIndex( _ID ));
String hasPhone =c.getString(c.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 + " = ?", new String[] { contact_id }, null);
while (phones.moveToNext())
{
String contactNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
allContacts.add(contactNumber);
break;
}
phones.close();
}
String name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
TXT_EmergencyContactNameProfile.setText(name);
}
}
break;
}
}
我希望循环 while (phones.moveToNext()) 得到所有不同的数字......但没有
非常感谢您;)
【问题讨论】:
-
你写的是你没有得到的,而不是你得到的:) 你现在得到的结果是什么?
-
嘿!首先,谢谢!我只从选择的联系人那里得到第一个电话号码。我想把它们都买下来:)
-
首先我想我会尝试在while循环中打印到logcat电话号码,以检查它进入循环的次数(当然在确保所选联系人确实有超过一个电话号码)。也许你应该删除“break;”
-
是的,我做到了,我还放了一个断点,循环只引发一次。删除 break 语句可能是个好主意:p 我让你保持联系
-
天哪,我太傻了!谢谢你,MorZa,我什至不知道我为什么把它放在那里....