Search code examples
androidandroid-intentandroid-contactsphone-number

How to get the phone number?


I'm trying to put in an edittext the phone number that was selected by user. I have a button :-

contact.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_PICK,
                        Phone.CONTENT_URI);
                startActivityForResult(intent, 0);

            }
        });

and the function below :

@Override
    public void onActivityResult(int reqCode, int resultCode, Intent data) {
        super.onActivityResult(reqCode, resultCode, data);

        switch (reqCode) {
        case 0:
            if (resultCode == Activity.RESULT_OK) {
                Cursor c = getContentResolver().query(Phone.CONTENT_URI, null,
                        null, null, null);
                c.moveToFirst();
                String phone = c.getString(c.getColumnIndexOrThrow(Phone.NUMBER));
                phone = phone.replace("-", "");
                Log.v("getting phone number", "Phone Number: " + phone);
                txtPhoneNo.setText(phone);

            }
            break;
        }
    }

and I got the phone number of last contact. How can I take the phone number that was selected?


Solution

  • Do something like:

    if (resultCode == Activity.RESULT_OK)
    {
      Uri contactData = data.getData();
      ContentResolver cr = getContentResolver();
      Cursor curContact = managedQuery(contactData, null, null, null, null);
    
      if ((curContact != null) && (curContact.moveToFirst()))
      {
        String id = curContact.getString(curContact
            .getColumnIndexOrThrow(BaseColumns._ID));
    
        // check there's a phone number at all
        if (Integer.parseInt(curContact.getString(curContact
            .getColumnIndexOrThrow(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0)
        {
    
          // get the phone number
          Cursor curNumbers = cr.query(
              ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
              ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?",
              new String[] { id }, null);
    
          if ((curNumbers != null) && curNumbers.moveToFirst())
          {
            String strNumber = 
              curNumbers.getString(
               curNumbers.getColumnIndexOrThrow(
                 ContactsContract.CommonDataKinds.Phone.NUMBER)));
    
            curNumbers.close();
          }
        }
        curContact.close();
      }