Android | Как лучше всего получить фотографию контакта по номеру телефона?

1

У меня есть приложение, которое должно получить фотографию данного контакта. У меня есть номер телефона контакта, так есть способ получить фотографию контакта, если он существует по номеру телефона через ContentResolver или в любой другой форме? Я искал, но не нашел ответов.

Я бы очень хотел подчеркнуть важность использования номера телефона, чтобы получить контактную фотографию, если она существует. Спасибо.

Теги:
android-contentresolver

2 ответа

8
Лучший ответ

Хорошо, я наконец выяснил, как добавить фотографии в facebook. Этот метод добавит фотографии в facebook, которые вам нужны по телефону. Номер:

    public Bitmap getFacebookPhoto(String phoneNumber) {
    Uri phoneUri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber));
    Uri photoUri = null;
    ContentResolver cr = this.getContentResolver();
    Cursor contact = cr.query(phoneUri,
            new String[] { ContactsContract.Contacts._ID }, null, null, null);

    if (contact.moveToFirst()) {
        long userId = contact.getLong(contact.getColumnIndex(ContactsContract.Contacts._ID));
        photoUri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, userId);

    }
    else {
        Bitmap defaultPhoto = BitmapFactory.decodeResource(getResources(), android.R.drawable.ic_menu_report_image);
        return defaultPhoto;
    }
    if (photoUri != null) {
        InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(
                cr, photoUri);
        if (input != null) {
            return BitmapFactory.decodeStream(input);
        }
    } else {
        Bitmap defaultPhoto = BitmapFactory.decodeResource(getResources(), android.R.drawable.ic_menu_report_image);
        return defaultPhoto;
    }
    Bitmap defaultPhoto = BitmapFactory.decodeResource(getResources(), android.R.drawable.ic_menu_report_image);
    return defaultPhoto;
}
  • 2
    Поднимает настроение ROFLwTIME, я перепробовал много ссылок, но не смог найти ничего подходящего, но ваш пост выиграл джекпот
  • 0
    Это то, что я ищу. Джек-пот! Спасибо @ROFLwTIME
0

Я не думаю, что есть простой способ сделать это. Но я думаю, вы можете пройти через Контакты по телефону и проверить каждый номер, если он тот, который вы пытаетесь сопоставить.

Так как числа все равно неупорядочены, то нет возможности сделать его более эффективным. Поиск в неупорядоченном списке выполняется путем их перемещения, поскольку я предлагаю вам сделать эту проблему. Если Android не сохранит все номера в упорядоченном списке, о котором я не знаю.

Вы можете перемещаться по контактам, выполняя что-то вроде этого:

Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null); 
while (cursor.moveToNext()) { 
   String contactId = cursor.getString(cursor.getColumnIndex( 
   ContactsContract.Contacts._ID)); 
   String hasPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); 
   if (Boolean.parseBoolean(hasPhone)) { 
      // You know it has a number so now query it like this
      Cursor phones = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId, null, null); 
      while (phones.moveToNext()) { 
         String phoneNumber = phones.getString(phones.getColumnIndex( ContactsContract.CommonDataKinds.Phone.NUMBER));                 
      } 
   phones.close(); 
}
cursor.close();

Это не полное решение вашей задачи, но, изменив код выше, я думаю, вы пройдете.: -)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню