2012-06-02 2 views
1

Пожалуйста, дайте мне знать, как работать с этим кодом, я хочу отобразить Contact Photo на экране. получение null из метода getPhoto(). Я много искал, но ничего не получил от этого кода от Contact Interface. но он не работает для меня ..... !!!показать фото моего контакта из PIM Список контактов в Blackberry?

public class PhotoExample { 

    private Contact _contact; 

    public PhotoExample(Contact contact) throws PIMException { 
     ContactList contactList = (ContactList) 
      PIM.getInstance().openPIMList(PIM.CONTACT_LIST, PIM.READ_WRITE); 
     _contact = contactList.createContact(); 
     /*_contact = contact;*/ 
    } 

    public void setPhoto() throws IOException { 
     byte[] photo = getSamplePhoto(); 
     byte[] photoEncoded = Base64OutputStream.encode(photo, 0, photo.length, false, false); 
     if (_contact.countValues(Contact.PHOTO) > 0) { 
      _contact.setBinary(Contact.PHOTO, 0, PIMItem.ATTR_NONE, photoEncoded, 0, photo.length); 
     } else { 
      _contact.addBinary(Contact.PHOTO, PIMItem.ATTR_NONE, photoEncoded, 0, photo.length); 
     } 
    } 

    public byte[] getPhoto() throws IOException { 
     if (_contact.countValues(Contact.PHOTO) > 0) { 
      byte[] photoEncoded = _contact.getBinary(Contact.PHOTO, 0); 
      return Base64InputStream.decode(photoEncoded, 0, photoEncoded.length); 
     } else { 
      return null; 
     } 
    } 

    private static byte[] getSamplePhoto() { 
     return null; 
     // return the raw bytes of the photo to use 
    } 

    /*public static void main(String[] args) throws Throwable { 
     PhotoExample example = new PhotoExample(); 
     example.setPhoto(); 
     example.getPhoto(); 
    }*/ 

} 

Я использую приведенный выше код следующим образом: -

try { 
      _photo = new PhotoExample(_contact); 
      b = _photo.getPhoto(); 
     } catch (PIMException e) { 
      System.out.println(e+"===>"); 
      e.printStackTrace(); 
     } catch (IOException e) { 
      System.out.println(e+"===>"); 
      e.printStackTrace(); 
     } 

ответ

2

После долгого времени, я попробовал эту задачу еще раз после нескольких поисков, теперь я получил успех и хочу поделиться в этом коде могут быть полезны для многих.

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 = null; 
       try { 
        imageBytes = Base64InputStream.decode(imageBytesBase64, 0, imageBytesBase64.length); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
       EncodedImage encodedImage = EncodedImage.createEncodedImage(imageBytes, 0, imageBytes.length); 
       Bitmap bitmap = encodedImage.getBitmap(); 
       bitmaps.addElement(bitmap); 
       BitmapField fd= new BitmapField(bitmap, Field.FIELD_HCENTER); 
       add(fd); 
Смежные вопросы