如何在android中从联系人中搜索号码?
我正在开发一个应用程序,我必须从联系人中搜索号码,并将该联系人添加到我的编辑文本中。我写了一些代码它去联系人,但没有添加编辑文本请告诉我我的代码中的任何错误 我的代码如何在android中从联系人中搜索号码?,android,android-contacts,Android,Android Contacts,我正在开发一个应用程序,我必须从联系人中搜索号码,并将该联系人添加到我的编辑文本中。我写了一些代码它去联系人,但没有添加编辑文本请告诉我我的代码中的任何错误 我的代码 searchBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(Intent.ACTION_GE
searchBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
startActivityForResult(intent,1);
}
});
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 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);
ephoneNumber.setText(number);
//contactEmail.setText(email);
}
}
您可以使用ContentResolver来执行此操作。调用此方法以获取联系人姓名:
此方法将从联系人列表中返回所需号码的名称。代码引用是这样的您可以同时获取名称或编号
// fetch contact name from phone directory
public String fetchNamePhone(String number){
String numberName= null;
/// number is the phone number
Uri lookupUri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI,Uri.encode(number));
String[] mPhoneNumberProjection = { PhoneLookup._ID, PhoneLookup.NUMBER, PhoneLookup.DISPLAY_NAME };
Cursor c = getContentResolver().query(lookupUri, mPhoneNumberProjection, null, null,null);
try {
if(c.moveToFirst()){
return number;
// numberName = c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));
}
else{
number = "";
}
} catch (Exception e) {
// TODO: handle exception
}
return number;
}
调用此函数后,您将检查number.length,如果大于1,则数字可用,否则数字不可用您编写的代码是联系人选择器。它将带您进入“联系人”应用程序,并允许您选择一个可在应用程序中使用的联系人。它不会搜索任何号码。清楚地解释你想要实现的目标每当我单击搜索按钮时,它都会转到我手机中的联系人。在你将字符串数字设置为ephoneNumber之前,你会得到字符串数字的内容???。尝试将日志放在那里并检查。确定。因此,您需要搜索联系人中的特定号码并显示姓名。那么@AbdEl Rahman给出的答案应该可以解决这个问题。没问题,当代码输入检索姓名的步骤时,这意味着联系人中存在您的号码。然后做你想做的任何事情。我假设您知道如何做这个小修改:@Durgai不知道如何从搜索按钮调用调用该方法,并将数字作为输入,并在line name=contactLookup后使其返回True……如何获取该参数您可以使用EditText从用户处获取该参数作为输入,并在单击editText.getText.toString旁边的按钮
// fetch contact name from phone directory
public String fetchNamePhone(String number){
String numberName= null;
/// number is the phone number
Uri lookupUri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI,Uri.encode(number));
String[] mPhoneNumberProjection = { PhoneLookup._ID, PhoneLookup.NUMBER, PhoneLookup.DISPLAY_NAME };
Cursor c = getContentResolver().query(lookupUri, mPhoneNumberProjection, null, null,null);
try {
if(c.moveToFirst()){
return number;
// numberName = c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));
}
else{
number = "";
}
} catch (Exception e) {
// TODO: handle exception
}
return number;
}