Как получить фотографию контакта PIM в виде растрового изображения с помощью RIM5.0?

Я хочу получить изображения контактов и отобразить их в BitmapFields.
Итак, я собираю объекты Bitmap из контактов, используя этот код:

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?


person Ashraf Bashir    schedule 18.06.2012    source источник


Ответы (1)


Я нашел решение для тех, кто заинтересован, изображения, полученные из 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);
}
person Ashraf Bashir    schedule 18.06.2012