Android 联系人选择器 [多个 hp 号码以及如何在 EditText 中显示]

Android Contact Picker [multiple hp number and how to display in EditText]

我想创建 3 个 TextView 字段,每个 TextView 字段都显示所选的联系人号码。 我只用了 1 个 TextView 就成功了,但我不知道要处理多个联系人。

contactNumber = (TextView) findViewById(R.id.contactnumber);
Button buttonPickContact = (Button)findViewById(R.id.pickcontact);
buttonPickContact.setOnClickListener(new Button.OnClickListener(){

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
            startActivityForResult(intent, 1);
        }});

下面显示了我如何只显示 1 个联系人的 hp 号码,但如何显示多个 phone 号码?比如TextView1显示123,TextView2显示456等等。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);

    if(requestCode == RQS_PICK_CONTACT){
        if(resultCode == RESULT_OK){
            Uri contactData = data.getData();
            Cursor cursor =  managedQuery(contactData, null, null, null, null);
            cursor.moveToFirst();

            String number =       cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER));

            //contactName.setText(name);
            contactNumber.setText(number);
            //contactEmail.setText(email);
        }
    }
}

您只需 运行 您的代码三次,并且每次使用不同的 TextView id、Button id 和 RequestCode.

您可以使用辅助方法,如下所示:

private void setupViews(long textViewId, long buttonId, final int requestCode) {
   TextView tv = (TextView) findViewById(textViewId);
   Button button = (Button) findViewById(buttonId);
   button.setOnClickListener(new OnClickListener(){
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
            intent.setType(Phone.CONTENT_ITEM_TYPE);
            startActivityForResult(intent, requestCode);
        }
   });
}

调用它 3 次,每个 TextView-Button 对:

setupViews(R.id.my_first_text_view, R.id.my_first_button, 1000);
setupViews(R.id.my_second_text_view, R.id.my_second_button, 2000);
setupViews(R.id.my_third_text_view, R.id.my_third_button, 3000);

然后根据 requestCode 处理 ActivityResult(将您现有的更新代码移至名为 updateTextView 的方法):

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        if (requestCode == 1000) {
            updateTextView(R.id.my_first_text_view);
        } else if (requestCode == 2000) {
            updateTextView(R.id.my_second_text_view);
        } else if (requestCode == 3000) {
            updateTextView(R.id.my_third_text_view);
        }
    }
}