Gaby Gaby - 1 month ago 15
Android Question

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?

Answer Source

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();
  }