0

我在检索联系人图片时遇到了问题。在我的 Galaxy Nexus(运行 JB,4.1.1)上,当我获得联系人图片时,它们显示得非常小。当我在我的 Droid 2(运行 GB,2.3.7)上运行相同的代码时,我总是得到我的默认图像。

这是我的代码:

Cursor cursor;

    cursor = getContentResolver().query(
            ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
            null,
            ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?",
            new String[]{id}, null);

    cursor.moveToFirst();

    contactName = cursor.getString(cursor.getColumnIndex((ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)));

    pictureID = Uri.withAppendedPath(result, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY).toString();

    if(contactPicture(Uri.parse(pictureID)))
    {
        contactsEditor.putString(""+id+ "Picture", pictureID);
    }
    else
        contactsEditor.putString("" + id + "Picture", "" + R.drawable.ic_contact_picture);

    contactsEditor.commit();

    contactNumber = cursor.getString(cursor.getColumnIndex((ContactsContract.CommonDataKinds.Phone.NUMBER)));

    cursor.close();

所有变量/常量都已正确定义(如果您想查看定义,请询问,我会发布它们)

这是我要放入的xml:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="horizontal"
        >
    <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">
        <ImageView
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:contentDescription="@string/contactPhotoDesc"
                android:id="@+id/contactPic"/>
    </LinearLayout>
    <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
        <TextView
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:id="@+id/contactName"/>
        <TextView
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:id="@+id/contactNumber"/>
    </LinearLayout>
</LinearLayout>

我的默认图像显示正常,但是当我从联系人检索图像时,它在 GNex 上显示得非常小。

4

1 回答 1

1

问题是 Galaxy Nexus 是高分辨率设备,而且图片似乎不是,所以(如果不缩放)它看起来会更小。

您可以将 ImageView 设置为固定大小,而不是 wrap_content,它会按比例放大。

您也可以使用此方法:

公共静态 InputStream openContactPhotoInputStream (ContentResolver cr, Uri contactUri, boolean preferHighres)

http://developer.android.com/reference/android/provider/ContactsContract.Contacts.html#openContactPhotoInputStream(android.content.ContentResolver,%20android.net.Uri,%20boolean )

似乎它将返回高分辨率联系人图片(如果有)。无论如何,您仍然需要在 ImageView 中设置固定大小,因为在低分辨率设备中,如果 Android 仍然返回高分辨率图片,它看起来会很大。

于 2012-09-04T23:54:52.300 回答