Android get contact number using name

前端 未结 3 1276
既然无缘
既然无缘 2021-01-16 16:41

I am trying to make an application on android that takes the contact name as a string input and returns his phone number if that contact exists in the phone book...

相关标签:
3条回答
  • 2021-01-16 17:23

    Try this way..

    Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
                String[] projection    = new String[] {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
                        ContactsContract.CommonDataKinds.Phone.NUMBER};
    
                Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
    
                int idxName = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);
                int idxNumber = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
    
                if(cursor.moveToFirst()) {
                    do {
                        contactname   = cursor.getString(idxName);
                        contactNumber = cursor.getString(idxNumber);
    
                        if (contactname.equals("YOUR CONTACT NAME")){
                            Log.d(LOG_TAG,"Contact Name -> "+ contactname +" Contact Number -> "+ contactNumber);
                        }
                    } while (cursor.moveToNext());
                }
                cursor.close();
    
    0 讨论(0)
  • 2021-01-16 17:24

    I wrote this method eventually to solve my problem

    public String get_Number(String name,Context context)
    
    {String number="";
    
    
    Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
    String[] projection    = new String[] {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
                    ContactsContract.CommonDataKinds.Phone.NUMBER};
    
    Cursor people = context.getContentResolver().query(uri, projection, null, null, null);
    
    int indexName = people.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);
    int indexNumber = people.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
    
    people.moveToFirst();
    do {
        String Name   = people.getString(indexName);
        String Number = people.getString(indexNumber);
        if(Name.equalsIgnoreCase(name)){return Number.replace("-", "");}
        // Do work...
    } while (people.moveToNext());
    
    
    if(!number.equalsIgnoreCase("")){return number.replace("-", "");}
    else return number;
    }
    

    it may not be very efficient but hey it works

    0 讨论(0)
  • 2021-01-16 17:40

    Try this way...

    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,);
    String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
    if(name.equals(Your_String)) {
        Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[] { id }, null);
        String lname = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
    }
    
    0 讨论(0)
提交回复
热议问题