androidandroid-contacts

Pick a Number and Name From Contacts List in android app


i want to pick a contact with it's number from my contacts list. i read a lot of solutions and research for couple weeks but all of articles didn't work properly. some codes like following:

Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT);

// and in activityresult:

if (resultCode == Activity.RESULT_OK) {
            Uri contactData = data.getData();
            Cursor c =  managedQuery(contactData, null, null, null, null);
            if (c.moveToFirst()) {
              String name = c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));
              tv1.setText(name);
            }
          }

or this code for getting all contacts but i cant have the number of contacts:

String[] contacts = new String[] {People.NAME, People.NUMBER};       
Uri contentUri = People.CONTENT_URI;        
Cursor cursor = managedQuery(contentUri, contacts, null, null, null);                 
String textContacts = "";                 
if (cursor.moveToFirst()) {         
    String myname = null;         
    String mynumber = null;         
    do {          
        textContacts = textContacts + cursor.getString(cursor.getColumnIndex(People.NAME)) + " : " + cursor.getString(cursor.getColumnIndex(People.NUMBER)) + "\n";         
    } while (cursor.moveToNext()); 
tv1.setText(textContacts);
}

can anyone help me plz? my android is 2.3.3


Solution

  • Try following code it will help you:

      // You need below permission to read contacts
      <uses-permission android:name="android.permission.READ_CONTACTS"/>
    
      // Declare
      static final int PICK_CONTACT=1;
    
      Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
      startActivityForResult(intent, PICK_CONTACT);
    
      //code 
      @Override
     public void onActivityResult(int reqCode, int resultCode, Intent data) {
     super.onActivityResult(reqCode, resultCode, data);
    
     switch (reqCode) {
     case (PICK_CONTACT) :
       if (resultCode == Activity.RESULT_OK) {
    
         Uri contactData = data.getData();
         Cursor c =  managedQuery(contactData, null, null, null, null);
         if (c.moveToFirst()) {
    
    
             String id =c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts._ID));
    
             String hasPhone =c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
    
               if (hasPhone.equalsIgnoreCase("1")) {
              Cursor phones = getContentResolver().query( 
                           ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null, 
                           ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ id, 
                           null, null);
                 phones.moveToFirst();
                  cNumber = phones.getString(phones.getColumnIndex("data1"));
                 System.out.println("number is:"+cNumber);
               }
             String name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
    
    
         }
       }
       break;
     }
     }