Android联系人图片问题

时间:2012-09-04 23:23:42

标签: android contacts android-contacts

我在检索联系人图片时遇到了问题。在我的Galaxy Nexus(运行JB,4.1.1)上,当我收到它们显示的联系人图片时,它们真的很小。当我在Droid 2(Runing 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上显示的确非常小。

1 个答案:

答案 0 :(得分:1)

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

您可以将ImageView设置为固定大小,而不是wrap_content,它会向上扩展。

您也可以使用此方法:

  

public static 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仍然返回高分辨率图片,它将看起来非常大。