如何在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;
    }