2012-09-04 86 views
0

我在檢索聯繫人圖片時遇到了問題。在我的Galaxy Nexus上(運行JB,4.1.1),當我得到聯繫人圖片時,他們顯示出真的很小。當我在Droid 2(Runing GB,2.3.7)上運行相同的代碼時,我總是得到我的默認圖像。Android聯繫人圖片問題

這裏是我的代碼:

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我「M把它變成:

<?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

問題是Galaxy Nexus是高分辨率設備,而且圖片似乎不是,所以(如果不縮放)它會看起來更小。

您可以將ImageView設置爲固定大小而不是wrap_content,並且它將向上擴展。

您也可以使用這個方法:

公共靜態的InputStream openContactPhotoInputStream(ContentResolver的CR,烏里contactUri,布爾preferHighres)

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

好像它會返回一個高分辨率的聯繫人圖片(如果有的話)。您仍然需要在ImageView中設置固定的尺寸,無論如何,因爲在低分辨率設備中,如果Android仍然返回高分辨率圖片,它看起來會非常大。

+0

OK,這似乎已經奏效了Galaxy Nexus的,但我仍然有2個問題: 1)我可以設置不同尺寸的ImageView的不同的屏幕大小 2)爲什麼會在聯繫人的圖片不顯示出來Droid 2?它仍然會返回我的默認圖片。 – Randy

+0

1)是的,最好的方法是使用樣式:http://developer.android.com/guide/topics/ui/themes.html 2)也許它取決於存儲在設備中的數據?我沒有檢索聯繫人的經驗,但您可以閱讀http://app-solut.com/blog/2011/03/working-with-the-contactscontract-to-query-contacts-in-android/或http://thinkandroid.wordpress.com/2009/12/30/handling-contact-photos-all-api-levels/ – Ixx