Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从一个联系人问题中检索所有号码_Android_Contactscontract - Fatal编程技术网

Android 从一个联系人问题中检索所有号码

Android 从一个联系人问题中检索所有号码,android,contactscontract,Android,Contactscontract,我知道这是一个常见的问题,因为我找到了很多关于它的答案,但我仍然有一个关于电话号码检索的问题 我想获取从“选择联系人”活动中选择的一个联系人的所有号码 这是我从onActivityResult()块中得到的代码 @覆盖 ActivityResult上的公共无效(int-reqCode、int-resultCode、意图数据){ super.onActivityResult(请求代码、结果代码、数据); 开关(reqCode){ 案例(选择联系人): if(resultCode==Activity

我知道这是一个常见的问题,因为我找到了很多关于它的答案,但我仍然有一个关于电话号码检索的问题

我想获取从“选择联系人”活动中选择的一个联系人的所有号码

这是我从onActivityResult()块中得到的代码

@覆盖
ActivityResult上的公共无效(int-reqCode、int-resultCode、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
开关(reqCode){
案例(选择联系人):
if(resultCode==Activity.RESULT\u确定){
ArrayList allContacts=新的ArrayList();
Uri contactData=data.getData();
游标c=getContentResolver().query(contactData,null,null,null,null);
while(c.moveToNext()){
字符串联系人_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(ContactsContact.CommonDataTypes.Phone.CONTENT\u URI,null,ContactsContact.CommonDataTypes.Phone.CONTACT\u ID+“=?”,新字符串[]{CONTACT\u ID},null);
while(phones.moveToNext())
{
String contactNumber=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataTypes.Phone.NUMBER));
所有联系人。添加(联系人号码);
打破
}
电话。关闭();
}
String name=c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_name));
TXT_EmergencyContactNameProfile.setText(名称);
}
}
打破
}
}
我希望循环while(phones.moveToNext())能够获得所有不同的号码。。。但是没有


事先非常感谢;)

尝试删除while循环中的“break;”。

你写的是你没有得到的,而不是你得到的:)你现在得到的结果是什么?嘿!首先,谢谢!我只从挑选的联系人那里得到第一个电话号码。首先,我想我会尝试打印while循环中的电话号码,以检查它进入循环的次数(当然,在确保所选联系人确实有多个电话号码之后)。也许你应该删除“break”;是的,我这样做了,我也放了一个断点,循环只引发一次。删除break语句可能是个好主意:p我让你保持联系,我太愚蠢了,就这样!谢谢你MorZa,我都不知道我为什么把它放在那里。。。。
 @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;
    }
}