Search code examples
blackberryjava-memidlet

Stuck up with MessageList in Blackberry


I am try to do MessageList in blackberry using midlet, but whatever I do some expection comes up. Right now am getting NullPointerException. Here is the code

EncodedImage indicatorIcon = EncodedImage.getEncodedImageResource("img/indicator.png");
   ApplicationIcon applicationIcon = new ApplicationIcon(indicatorIcon);
   ApplicationIndicatorRegistry.getInstance().register(applicationIcon, false, false);

   ApplicationMessageFolderRegistry reg = ApplicationMessageFolderRegistry.getInstance();
   MessageListStore messageStore = MessageListStore.getInstance();
   if(reg.getApplicationFolder(INBOX_FOLDER_ID) == null)
   {
       ApplicationDescriptor daemonDescr = ApplicationDescriptor.currentApplicationDescriptor();
       String APPLICATION_NAME = "TestAPP";
       ApplicationDescriptor mainDescr = new ApplicationDescriptor(daemonDescr, APPLICATION_NAME, new String[] {});
       ApplicationFolderIntegrationConfig inboxIntegration = new ApplicationFolderIntegrationConfig(true, true, mainDescr);
       ApplicationFolderIntegrationConfig deletedIntegration = new ApplicationFolderIntegrationConfig(false);

       ApplicationMessageFolder inbox = reg.registerFolder(MyApp.INBOX_FOLDER_ID, "Inbox", messageStore.getInboxMessages(),
                       inboxIntegration);
       ApplicationMessageFolder deleted = reg.registerFolder(MyApp.DELETED_FOLDER_ID, "Deleted Messages", messageStore.getDeletedMessages(), deletedIntegration);
       messageStore.setFolders(inbox, deleted);
   }
   DemoMessage message = new DemoMessage();
   String name = "John";
   message.setSender(name);
   message.setSubject("Hello from " + name);
   message.setMessage("Hello Chris. This is " + name + ". How are you?  Hope to see you at the conference!");
   message.setReceivedTime(System.currentTimeMillis());
   messageStore.addInboxMessage(message);
   messageStore.getInboxFolder().fireElementAdded(message);

Can someone suggest me a simple MessageList sample for midlet to just show a String in MessageList and custom ApplicationIndicator value. If possible OnClick of message bring back the midlet from background.


Solution

  • use the following code:

        static class OpenContextMenu extends ApplicationMenuItem {
            public OpenContextMenu( int order ) {
                super( order );
            }
    
            public Object run( Object context ) {
                if( context instanceof NewMessage ) {
                    try {
                        NewMessage message = (NewMessage) context;
                        if( message.isNew() ) {
                            message.markRead();
                            ApplicationMessageFolderRegistry reg = ApplicationMessageFolderRegistry.getInstance();
                            ApplicationMessageFolder folder = reg.getApplicationFolder( Mes
    
    sageList.INBOX_FOLDER_ID );
                        folder.fireElementUpdated( message, message );
                        //changeIndicator(-1);
                    }
    
                    Inbox inbox = message.getInbox();
                    Template template = inbox.getTemplate();
    
                    //Launch the mainscreen
                    UiApplication.getUiApplication().requestForeground();
                }
                catch (Exception ex) {
                    Dialog.alert();
                }
            }
            return context;
        }
    
        public String toString() {
            return "Name of the menu item";
        }
    }