2011-09-16 87 views
0

我設法獲得了ContactsContact.Directory的大部分工作(http://stackoverflow.com/questions/7436969/contactscontract-directory-how-doi-i-返回照片),並加載搜索結果縮略圖的照片。我還可以查看LOOKUP URI中的聯繫人詳細信息。但我無法在聯繫人詳細信息中提取用戶照片。Honeycomb ContactsContract.Directory - 在用戶詳細信息中顯示照片

我的數據不駐留在數據庫中,但其全部來自HTTPS REST查詢。

爲了避開圖像不是本地的,我創建了第二個內容提供者,它只需要一個URI,解析一個參數(url)並通過覆蓋openFile來下載一個圖像(如果還沒有被緩存在SD卡上的話) http://stackoverflow.com/questions/3883211/how-to-store-large-blobs-in-an-android-content-provider)。這樣,當我通過uri返回爲PHOTO_THUMBNAIL_URI

這很好用,並在聯繫人的結果部分顯示圖像相當快。我的問題是現在我無法在聯繫人詳細信息屏幕中加載照片。

據我所知,它正在對我的目錄提供程序進行第二次查詢以查找LOOKUP,我解析了所有字段,儘管它只要求PHOTO_URI,而不是PHOTO_THUMBNAIL_URI,這不是什麼大問題,因爲我將相同的URI傳遞給我內容提供商..但是這次它似乎不能正常工作,因爲它甚至不會嘗試打我的照片提供商。

然後,我決定嘗試在本地解析&下載照片數據並在查找響應中包含Byte []數據作爲PHOTO(Data15),但這也不起作用。

在這一點上,任何幫助將不勝感激。

static void addPhotoRow(MatrixCursor cursor, UdsProjection udsProjection, long contactId, 
      String lookupKey, String accountName, String displayName, String photoUri) { 
     UdsContactRow r = new UdsContactRow(
       udsProjection, contactId, lookupKey, accountName, displayName); 
     r.put(Data.MIMETYPE, ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE); 
     r.put(Photo.PHOTO_ID, photoUri); 
     //r.put(Photo.PHOTO, getPhotoBytes(photoUri)); 
     cursor.addRow(r.getRow()); 
     Log.e("TAG","Adding photo row " + photoUri); 
    } 

回答

0

因此,我可以對結果進行說明。顯然,您將項目添加到您返回的光標的順序非常重要。我在我的光標前的任何細節(如電話號碼)移動Photo mime類型的行,然後它開始工作..希望這可以幫助別人把頭髮拉出一個下午。