我在检索联系人图片时遇到了问题。在我的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上显示的确非常小。
答案 0 :(得分:1)
问题在于Galaxy Nexus是高分辨率设备,而且图片似乎不是,因此(如果没有缩放)它看起来会更小。
您可以将ImageView设置为固定大小,而不是wrap_content,它会向上扩展。
您也可以使用此方法:
public static InputStream openContactPhotoInputStream(ContentResolver cr,Uri contactUri,boolean preferHighres)
它似乎会返回高分辨率的联系人图片(如果有的话)。无论如何,您仍然需要在ImageView中设置固定大小,因为在低分辨率设备中,如果Android仍然返回高分辨率图片,它将看起来非常大。