如果联系人在Android中有多个号码,如何获取电话号码

时间:2012-02-05 07:06:28

标签: android

我使用了此代码,点击联系人后,我可以从联系人处获取该号码。但是,有些联系人有多个电话号码。如何访问其他手机号码。我已经尝试了一个星期,但它没有奏效:( 提前谢谢。

这是我的代码:

//Choose number from phone book setup
    btnPhonebook.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent pb = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
            startActivityForResult(pb, 1);
        }
    });

}

//Listen the result from phone book button
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    //super.onActivityResult(requestCode, resultCode, data);
    ContentResolver cr = getContentResolver();
    if (resultCode == Activity.RESULT_OK) {
        Uri contactData = data.getData();
        Cursor contactCursor = managedQuery(contactData, null, null, null, null);
        String cellNoFromPhonebook;
        String phoneNumber = null;
        if (contactCursor.moveToFirst()) {
            cellNoFromPhonebook = contactCursor.getString(contactCursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));

            Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null); 
            while (phones.moveToNext()) 
            {
                String name = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                if (name.compareTo(cellNoFromPhonebook) == 0) {
                    phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
            }

            }
            phones.close();

            etNumber.setText(phoneNumber);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

private void pickContact() {
         Intent intent = new Intent(Intent.ACTION_PICK, Contacts.CONTENT_URI);
         startActivityForResult(intent, PICK_CONTACT_REQUEST);
    }

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == Activity.RESULT_OK && requestCode == PICK_CONTACT_REQUEST) {              
            String [] numbers = null;
            int i = 0;

            String phoneNumber = null;
            String id = null;
            String name = null;

            ContentResolver cr = getContentResolver();
            Cursor cur = cr.query(data.getData(), null, null, null, null);

            if (cur.getCount() > 0) {

                while (cur.moveToNext()) {
                    id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));

                    name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));

                    if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
                        Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, 
                                ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", new String[]{id}, null);
                        numbers = new String[pCur.getCount()];
                                while (pCur.moveToNext()) {
                                    phoneNumber = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                                    numbers[i] = phoneNumber;
                                    i++;    
                                }
                                pCur.close();
                            }                                 
                     }

                }
            cur.close();
            AlertDialog.Builder ad=new AlertDialog.Builder(this);
            ad.setTitle(name);
            ad.setItems(numbers, new OnClickListener() {

                public void onClick(DialogInterface dialog, int which) {

                    }
                });
            AlertDialog adb = ad.create();
            adb.show();
            }   
        }