2014-02-11 381 views
1

在這裏,我從光標取值:BitmapFactory.decodeStream總是返回空值

if (mProfileCursor.moveToFirst()) { 
     byte[] blob = mProfileCursor.getBlob(
      mProfileCursor.getColumnIndex(ContactsContract.Profile.PHOTO_URI)); 
     ByteArrayInputStream inputStream = new ByteArrayInputStream(blob); 
     BufferedInputStream bis = new BufferedInputStream(inputStream,1024); 
     bitmap = BitmapFactory.decodeStream(bis); 
    } 
} finally { 
    if (mProfileCursor != null) { 
     mProfileCursor.close(); 
    } 
} 

我試圖改變的byte []成位圖,但我得到總是,根據答案在以下文章Android: bitmapfactory.decodestream returns null我試過BufferedInputStream但它不適合我。 也Romain Guy這裏說,這是一個已知的Android缺陷,但答案是非常古老的,請讓我知道如果有方法獲取位圖正確。

+0

PHOTO_URI是一個文本,而不是blob – pskink

回答

1

公共靜態最後絃樂PHOTO_URI

在API級別11 一個URI,可用於檢索聯繫人的全尺寸照片。如果PHOTO_FILE_ID不爲空,則會使用基於CONTENT_URI的URI來填充該字段。否則,將使用與PHOTO_THUMBNAIL_URI相同的值填充該值。照片可以通過URI(此字段)或ID(請參閱PHOTO_ID)進行引用。如果PHOTO_FILE_ID或PHOTO_ID不爲空,則PHOTO_URI和PHOTO_THUMBNAIL_URI不應爲空(但反過來不一定爲空)。因此,使用PHOTO_URI是檢索聯繫人照片的更健壯的方法。

類型:TEXT

常數值: 「photo_uri」

這是醫生說什麼,pskink是正確的,它返回一個字符串。另外,如果decodeStream不能解碼圖像數據並且它不會產生任何異常,那麼decodeStream將返回null,因此請小心,在使用前檢查這些值。

相關問題