Android 尝试使用联系人选择器将联系人插入edittext
我试图允许用户在android中使用联系人选择器插入他们的号码。我目前正在使用联系人选择器中出现的第2篇文章中的示例,因此,当我选择联系人时,联系人号码不会影响我的编辑文本。 没有logcat错误或其他任何错误 我的代码:Android 尝试使用联系人选择器将联系人插入edittext,android,contact,Android,Contact,我试图允许用户在android中使用联系人选择器插入他们的号码。我目前正在使用联系人选择器中出现的第2篇文章中的示例,因此,当我选择联系人时,联系人号码不会影响我的编辑文本。 没有logcat错误或其他任何错误 我的代码: public void doLaunchContactPicker(View view) { Intent contactPickerIntent = new Intent(Intent.ACTION_PICK, Contacts.CO
public void doLaunchContactPicker(View view) {
Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,
Contacts.CONTENT_URI);
startActivityForResult(contactPickerIntent, CONTACT_PICKER_RESULT);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
switch (requestCode) {
case CONTACT_PICKER_RESULT:
Cursor cursor = null;
String phoneNumber = "";
List<String> allNumbers = new ArrayList<String>();
int phoneIdx = 0;
try {
Uri result = data.getData();
String id = result.getLastPathSegment();
cursor = getContentResolver().query(Phone.CONTENT_URI, null, Phone.CONTACT_ID + "=?", new String[] { id }, null);
phoneIdx = cursor.getColumnIndex(Phone.DATA);
if (cursor.moveToFirst()) {
while (cursor.isAfterLast() == false) {
phoneNumber = cursor.getString(phoneIdx);
allNumbers.add(phoneNumber);
cursor.moveToNext();
}
} else {
//no results actions
}
} catch (Exception e) {
//error actions
} finally {
if (cursor != null) {
cursor.close();
}
final EditText phoneInput = (EditText) findViewById(R.id.mobileno);
final CharSequence[] items = allNumbers.toArray(new String[allNumbers.size()]);
AlertDialog.Builder builder = new AlertDialog.Builder(SIMMessageSenderActivity.this);
builder.setTitle("Choose a number");
builder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
String selectedNumber = items[item].toString();
selectedNumber = selectedNumber.replace("-", "");
phoneInput.setText(selectedNumber);
}
});
AlertDialog alert = builder.create();
if(allNumbers.size() > 1) {
alert.show();
} else {
String selectedNumber = phoneNumber.toString();
selectedNumber = selectedNumber.replace("-", "");
phoneInput.setText(selectedNumber);
}
if (phoneNumber.length() == 0) {
//no numbers found actions
}
}
break;
}
} else {
//activity result error actions
}
}
public void doLaunchContactPicker(视图){
Intent contactPickerIntent=新的Intent(Intent.ACTION\u PICK,
联系人。内容(URI);
startActivityForResult(联系人选取器内容、联系人选取器结果);
}
@凌驾
ActivityResult上受保护的void(int请求代码、int结果代码、意图数据){
如果(resultCode==RESULT_OK){
开关(请求代码){
案例联系人\u选取者\u结果:
游标=空;
字符串phoneNumber=“”;
List allNumbers=new ArrayList();
int phoneIdx=0;
试试{
Uri结果=data.getData();
字符串id=result.getLastPathSegment();
cursor=getContentResolver().query(Phone.CONTENT_URI,null,Phone.CONTACT_ID+“=?”,新字符串[]{ID},null);
phoneIdx=cursor.getColumnIndex(Phone.DATA);
if(cursor.moveToFirst()){
while(cursor.isAfterLast()==false){
phoneNumber=cursor.getString(phoneIdx);
添加(电话号码);
cursor.moveToNext();
}
}否则{
//无结果行动
}
}捕获(例外e){
//错误操作
}最后{
如果(游标!=null){
cursor.close();
}
最终EditText电话输入=(EditText)findViewById(R.id.mobileno);
final CharSequence[]items=allNumbers.toArray(新字符串[allNumbers.size()]);
AlertDialog.Builder=新建AlertDialog.Builder(SIMMessageSenderActivity.this);
builder.setTitle(“选择一个数字”);
setItems(items,新的DialogInterface.OnClickListener()对话框){
公共void onClick(对话框接口对话框,int项){
String selectedNumber=items[item].toString();
selectedNumber=selectedNumber。替换(“-”,”);
phoneInput.setText(selectedNumber);
}
});
AlertDialog alert=builder.create();
如果(allNumbers.size()>1){
alert.show();
}否则{
String selectedNumber=phoneNumber.toString();
selectedNumber=selectedNumber。替换(“-”,”);
phoneInput.setText(selectedNumber);
}
如果(phoneNumber.length()==0){
//找不到任何数字操作
}
}
打破
}
}否则{
//活动结果错误操作
}
}
下面的代码是我正在使用的代码,对我来说非常好。试试这个
if((requestCode == PICK_CONTACT) && (resultCode == RESULT_OK))
{
if (data != null) {
Uri contactData = data.getData();
try {
String id = contactData.getLastPathSegment();
String[] columns = {Phone.DATA,Phone.DISPLAY_NAME};
Cursor phoneCur = getContentResolver()
.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
columns ,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ " = ?", new String[] { id },
null);
final ArrayList<String> phonesList = new ArrayList<String>();
String Name = null ;
if(phoneCur.moveToFirst())
{
do{
Name = phoneCur.getString(phoneCur.getColumnIndex(Phone.DISPLAY_NAME));
String phone = phoneCur
.getString(phoneCur
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA));
phonesList.add(phone);
} while (phoneCur.moveToNext());
}
phoneCur.close();
if (phonesList.size() == 0) {
Toast.makeText(
this,"This contact does not contacin any number",
Toast.LENGTH_LONG).show();
} else if (phonesList.size() == 1) {
toET.setText(phonesList.get(0));
} else {
final String[] phonesArr = new String[phonesList
.size()];
for (int i = 0; i < phonesList.size(); i++) {
phonesArr[i] = phonesList.get(i);
}
AlertDialog.Builder dialog = new AlertDialog.Builder(
MessageManagerActivity.this);
dialog.setTitle("Name : "+Name);
((Builder) dialog).setItems(phonesArr,
new DialogInterface.OnClickListener() {
public void onClick(
DialogInterface dialog,
int which) {
String selectedEmail = phonesArr[which];
toET.setText(selectedEmail);
}
}).create();
dialog.show();
}
} catch (Exception e) {
Log.e("FILES", "Failed to get phone data", e);
}
}
}
if((requestCode==PICK\u CONTACT)&&(resultCode==RESULT\u OK))
{
如果(数据!=null){
Uri contactData=data.getData();
试一试{
字符串id=contactData.getLastPathSegment();
String[]columns={Phone.DATA,Phone.DISPLAY_NAME};
游标phoneCur=getContentResolver()
.query(contacts contract.commondatatypes.Phone.CONTENT\u URI、,
柱,
Contacts contract.CommonDataTypes.Phone.CONTACT\u ID
+“=?”,新字符串[]{id},
无效);
final ArrayList phonesList=新ArrayList();
字符串名称=null;
if(phoneCur.moveToFirst())
{
做{
Name=phoneCur.getString(phoneCur.getColumnIndex(Phone.DISPLAY_Name));
字符串phone=phoneCur
.getString(phoneCur)
.getColumnIndex(ContactsContract.CommonDataTypes.Phone.DATA));
电话列表。添加(电话);
}while(phoneCur.moveToNext());
}
phoneCur.close();
如果(phonesList.size()==0){
Toast.makeText(
“此联系人不包含任何号码”,
Toast.LENGTH_LONG).show();
}else if(phonesList.size()==1){
toET.setText(phonesList.get(0));
}否则{
最终字符串[]phonesArr=新字符串[phonesList]
.size()];
对于(int i=0;i