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);
}
}
}
我想创建 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);
}
}
}