0

連絡先の画像を取得してBitmapFieldsで表示したい。
したがって、次のコードを使用して、連絡先からビットマップオブジェクトを収集しています。

Vector bitmaps = new Vector();
BlackBerryContactList contactList = (BlackBerryContactList)BlackBerryPIM.getInstance().openPIMList(BlackBerryPIM.CONTACT_LIST, BlackBerryPIM.READ_WRITE);
Enumeration contactListItems = contactList.items();
int counter = 0;
while (contactListItems.hasMoreElements()) {
    BlackBerryContact contact = (BlackBerryContact)contactListItems.nextElement();
    byte[] imageBytes = contact.getBinary(BlackBerryContact.PHOTO, counter);
    EncodedImage encodedImage = EncodedImage.createEncodedImage(imageBytes, 0, imageBytes.length);
    Bitmap bitmap = encodedImage.getBitmap();
    bitmaps.addElement(bitmap);
    counter++;
}

残念ながら、コードは次のjava.lang.IllegalArumentExceptionメソッドをスローします。

EncodedImage.createEncodedImage(imageBytes, 0, imageBytes.length);

byte[]画像をどのように変換する必要がありBitmapFieldますか?

4

1 に答える 1

3

興味のある人のための解決策を見つけました。PIMから取得した画像はBase64でエンコードされているため、最初にデコードする必要があります。正しいコードは次のとおりです。

Vector bitmaps = new Vector();
BlackBerryContactList contactList = (BlackBerryContactList)BlackBerryPIM.getInstance().openPIMList(BlackBerryPIM.CONTACT_LIST, BlackBerryPIM.READ_WRITE);
Enumeration contactListItems = contactList.items();
while (contactListItems.hasMoreElements()) {
    BlackBerryContact contact = (BlackBerryContact)contactListItems.nextElement();
    byte[] imageBytesBase64 = contact.getBinary(BlackBerryContact.PHOTO, 0);
    byte[] imageBytes = Base64InputStream.decode(imageBytesBase64, 0, imageBytesBase64.length);
    EncodedImage encodedImage = EncodedImage.createEncodedImage(imageBytes, 0, imageBytes.length);
    Bitmap bitmap = encodedImage.getBitmap();
    bitmaps.addElement(bitmap);
}
于 2012-06-18T15:08:55.437 に答える