how to get contact photo URI

后端 未结 5 1579
夕颜
夕颜 2020-12-01 16:59

I am working with Android Contact ContentProvider. I have a Phone Number and I need to get the URI of the Photo of the contact associated with thi

5条回答
  •  一个人的身影
    2020-12-01 17:31

    To get the conatct id using the phone number use the following code:

    import android.provider.ContactsContract.PhoneLookup;
    
    public String fetchContactIdFromPhoneNumber(String phoneNumber) {
        Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI,
            Uri.encode(phoneNumber));
        Cursor cursor = this.getContentResolver().query(uri,
            new String[] { PhoneLookup.DISPLAY_NAME, PhoneLookup._ID },
            null, null, null);
    
        String contactId = "";
    
        if (cursor.moveToFirst()) {
            do {
            contactId = cursor.getString(cursor
                .getColumnIndex(PhoneLookup._ID));
            } while (cursor.moveToNext());
        }
    
        return contactId;
      }
    

    and use the contact id obtained to get the contatc photo URI. Use the following code for getting photo URI:

    import android.provider.ContactsContract;
    import android.provider.ContactsContract.CommonDataKinds.Phone;
    
    public Uri getPhotoUri(long contactId) {
        ContentResolver contentResolver = getContentResolver();
    
        try {
            Cursor cursor = contentResolver
                .query(ContactsContract.Data.CONTENT_URI,
                    null,
                    ContactsContract.Data.CONTACT_ID
                        + "="
                        + contactId
                        + " AND "
    
                        + ContactsContract.Data.MIMETYPE
                        + "='"
                        + ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE
                        + "'", null, null);
    
            if (cursor != null) {
            if (!cursor.moveToFirst()) {
                return null; // no photo
            }
            } else {
            return null; // error in cursor process
            }
    
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    
        Uri person = ContentUris.withAppendedId(
            ContactsContract.Contacts.CONTENT_URI, contactId);
        return Uri.withAppendedPath(person,
            ContactsContract.Contacts.Photo.CONTENT_DIRECTORY);
      }
    

    Hope this would help.

提交回复
热议问题