猿问

如何加载联系人照片?

我在为Android中的联系人加载照片时遇到问题。我已经用谷歌搜索了一个答案,但到目前为止却空无一人。有没有人举一个查询联系人然后加载照片的例子?


因此,给定一个contactUri来自活动结果,该结果称为using


startActivityForResult(new Intent(Intent.ACTION_PICK,ContactsContract.CommonDataKinds.Phone.CONTENT_URI),PICK_CONTACT_REQUEST) 

是:


内容://com.android.contacts/data/1557


loadContact(..)正常工作。但是,当我调用getPhoto(...)方法时,我得到的照片InputStream为空值。这也令人困惑,因为URI值不同。contactPhotoUri评估为:


内容://com.android.contacts/contacts/1557


请参阅以下代码中的内联注释。


 class ContactAccessor {


    /**

     * Retrieves the contact information.

     */

    public ContactInfo loadContact(ContentResolver contentResolver, Uri contactUri) {


        //contactUri --> content://com.android.contacts/data/1557


        ContactInfo contactInfo = new ContactInfo();


        // Load the display name for the specified person

        Cursor cursor = contentResolver.query(contactUri,

                                            new String[]{Contacts._ID, 

                                                         Contacts.DISPLAY_NAME, 

                                                         Phone.NUMBER,

                                                         Contacts.PHOTO_ID}, null, null, null);

        try {

            if (cursor.moveToFirst()) {

                contactInfo.setId(cursor.getLong(0));

                contactInfo.setDisplayName(cursor.getString(1));

                contactInfo.setPhoneNumber(cursor.getString(2));

            }

        } finally {

            cursor.close();

        }        

        return contactInfo;  // <-- returns info for contact

    }

显然,我在这里做错了,但我似乎无法弄清楚问题出在哪里。谢谢。


繁花不似锦
浏览 392回答 3
3回答

扬帆大鱼

这对我有用:public static Bitmap loadContactPhoto(ContentResolver cr, long&nbsp; id) {&nbsp; &nbsp; Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, id);&nbsp; &nbsp; InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(cr, uri);&nbsp; &nbsp; if (input == null) {&nbsp; &nbsp; &nbsp; &nbsp; return null;&nbsp; &nbsp; }&nbsp; &nbsp; return BitmapFactory.decodeStream(input);}
随时随地看视频慕课网APP

相关分类

Android
我要回答