如何从联系人的 id 显示联系人的照片? [英] How do I display a contact's photo from the contact's id?

查看:38
本文介绍了如何从联系人的 id 显示联系人的照片?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

此代码(在我的 CustomAdapter 类中)仅根据向我发送短信的人显示联系人 ID,并将其放入 ArrayList,然后显示列表.

This code (within my CustomAdapter class) displays only the contact id based on the who sent me text messages and puts them into an ArrayList, then displays the list.

我在每个联系人 ID 旁边都有一个名为 holder.photo 的 ImageView.如何在 ImageView 中显示联系人的照片?

I have a ImageView called holder.photo next to each contact id. How would I go about displaying the contact's photo in the in the ImageView?

        String folder = "content://sms/inbox/";
        Uri mSmsQueryUri = Uri.parse(folder);
        messages = new ArrayList<String>();
        contactID = new ArrayList<String>();
        SMS = new ArrayList<String>();

        try {
            c = context.getContentResolver().query(mSmsQueryUri,
                    new String[] { "_id", "address", "date", "body" },
                    null, null, null);
            if (c == null) {
                Log.i(TAG, "cursor is null. uri: " + mSmsQueryUri);
            }

        } catch (Exception e) {
            //Log.e(TAG, e.getMessage());
        } finally {
            c.close();
        }
            c.moveToFirst();
            while (c.moveToNext()) {

                phoneNumber = c.getString(0);
                contactID.add(phoneNumber);
            }
        holder.photo.?????
        //contact will cycle through all names and display each in a listview.
        holder.contact.setText(contactID.get(position);

目前,我的列表视图显示如下:

Currently, my listview displays this:

  • android_icon-----John Doe
  • android_icon-----简·史密斯
  • android_icon-----富巴尔

推荐答案

试试这个..

public void getContacts(ContentResolver cr) {
    Cursor phones = cr.query(
            ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null,
            null, null);
    while (phones.moveToNext()) {
        String name = phones
                .getString(phones
                        .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
        String contactId = phones
                .getString(phones
                        .getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID));

       Bitmap bitmap = loadContactPhoto(
                getContentResolver(), Long.valueOf(contactId))
       }
    phones.close();

获取位图图像

public static Bitmap loadContactPhoto(ContentResolver cr, long id) {
    Uri uri = ContentUris.withAppendedId(
            ContactsContract.Contacts.CONTENT_URI, id);
    InputStream input = ContactsContract.Contacts
            .openContactPhotoInputStream(cr, uri);
    if (input == null) {
        return null;
    }
    return BitmapFactory.decodeStream(input);
}

这篇关于如何从联系人的 id 显示联系人的照片?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆