Today I want to share some interesting topic was display indicator icon and notification message on blackberry. That is use to display push notification, custom alert, reminder etc. I have user to notification and indicator icon on task management application.
1. Create Blackberry application new project ex: "testmessageIndicator".
2. Create new class "DemoMessage.java" and copy following code
3. Create new class " MyApp.java" and copy following code this is main class of application.
7. Output
Indicator Icon display:
Notification Icon display:
1. Create Blackberry application new project ex: "testmessageIndicator".
2. Create new class "DemoMessage.java" and copy following code
package mypackage; import java.util.Date; import net.rim.blackberry.api.messagelist.ApplicationMessage; import net.rim.device.api.system.*; /** * This class provides a sample implementation of the ApplicationMessage * interface. It demonstrates how an application can define its own message * formats for use with the message store. */ public final class DemoMessage implements ApplicationMessage { static final int DEMO_MESSAGE_TYPE = 0x01; private String _sender; private String _subject; private String _message; private long _receivedTime; private boolean _isNew; private boolean _deleted; private String _replyMessage; private long _replyTime; private EncodedImage _previewPicture; /** * Creates a new DemoMesage object */ public DemoMessage() { _isNew = true; } /** * Constructs a DemoMessage object with specified properties * * @param sender The name of the sender * @param subject The subject of the message * @param message The body of the message * @param receivedTime The time stamp for when the message was received */ public DemoMessage(String sender, String subject, String message, long receivedTime) { _sender = sender; _subject = subject; _message = message; _receivedTime = receivedTime; _isNew = true; } /** * Stores the reply message and sets the reply time * * @param message The reply message */ void reply(String message) { markRead(); _replyMessage = message; _replyTime = System.currentTimeMillis(); } /** * Marks this message as deleted */ void messageDeleted() { _isNew = false; _deleted = true; } /** * Marks this message as new */ void markAsNew() { _isNew = true; _replyMessage = null; } /** * Marks this message as read */ void markRead() { _isNew = false; } /** * Indicates whether this message is new or not * * @return True if the message is new, false otherwise */ boolean isNew() { return _isNew; } /** * Indicates whether this message has been replied to or not * * @return True if the message has been replied to, false otherwise */ boolean hasReplied() { return _replyMessage != null; } /** * Sets the name of the sender who sent this message * * @param sender The name of the sender */ void setSender(String sender) { _sender = sender; } /** * Sets the subject of this message * * @param subject The subject of this message */ void setSubject(String subject) { _subject = subject; } /** * Sets the time at which this message was received * * @param receivedTime The time at which this message was received */ void setReceivedTime(long receivedTime) { _receivedTime = receivedTime; } /** * Sets the message body * * @param message The message body */ void setMessage(String message) { _message = message; } /** * Retrieves the message body * * @return The message body */ String getMessage() { return _message; } /** * Sets the preview picture for this message * * @param image The desired preview picture of this message */ void setPreviewPicture(EncodedImage image) { _previewPicture = image; } // Implementation of ApplicationMessage ------------------------------------ /** * @see net.rim.blackberry.api.messagelist.ApplicationMessage#getContact() */ public String getContact() { return _sender; } /** * @see net.rim.blackberry.api.messagelist.ApplicationMessage#getStatus() */ public int getStatus() { // Form message list status based on current message state if(_isNew) { return MyApp.STATUS_NEW; } if(_deleted) { return MyApp.STATUS_DELETED; } if(_replyMessage != null) { return MyApp.STATUS_REPLIED; } return MyApp.STATUS_OPENED; } /** * * @see net.rim.blackberry.api.messagelist.ApplicationMessage#getSubject() */ public String getSubject() { if(_replyMessage != null) { return "Re: " + _subject; } else { return _subject; } } /** * @see net.rim.blackberry.api.messagelist.ApplicationMessage#getTimestamp() */ public long getTimestamp() { return _receivedTime; } /** * @see net.rim.blackberry.api.messagelist.ApplicationMessage#getType() */ public int getType() { // All messages have the same type return DEMO_MESSAGE_TYPE; } /** * @see net.rim.blackberry.api.messagelist.ApplicationMessage#getPreviewText() */ public String getPreviewText() { if(_message == null) { return null; } StringBuffer buffer = new StringBuffer(_message); if(_replyMessage != null) { buffer.append(". You replied on ").append(new Date(_replyTime)).append(": ").append(_replyMessage); } return buffer.length() > 100 ? buffer.toString().substring(0, 100) + " ..." : buffer.toString(); } /** *@see net.rim.blackberry.api.messagelist.ApplicationMessage#getCookie(int) */ public Object getCookie(int cookieId) { return null; } /** * * @see net.rim.blackberry.api.messagelist.ApplicationMessage#getPreviewPicture() */ public Object getPreviewPicture() { return _previewPicture; } }@source form MessageListDemo Demo example. This example you can also download from github.
3. Create new class " MyApp.java" and copy following code this is main class of application.
package mypackage; import net.rim.blackberry.api.messagelist.ApplicationMessage; import net.rim.device.api.ui.UiApplication; /** * This class extends the UiApplication class, providing a * graphical user interface. */ public class MyApp extends UiApplication { /** * Flag for replied messages. The lower 16 bits are RIM-reserved, so we have * to use higher 16 bits. */ static final int FLAG_REPLIED = 1 << 16; /** * Flag for deleted messages. The lower 16 bits are RIM-reserved, so we have * to use higher 16 bits. */ static final int FLAG_DELETED = 1 << 17; static final int BASE_STATUS = ApplicationMessage.Status.INCOMING; static final int STATUS_NEW = BASE_STATUS | ApplicationMessage.Status.UNOPENED; static final int STATUS_OPENED = BASE_STATUS | ApplicationMessage.Status.OPENED; static final int STATUS_REPLIED = BASE_STATUS | ApplicationMessage.Status.OPENED | FLAG_REPLIED; static final int STATUS_DELETED = BASE_STATUS | FLAG_DELETED; /** * Entry point for application * @param args Command line arguments (not used) */ public static void main(String[] args) { // Create a new instance of the application and make the currently // running thread the application's event dispatch thread. MyApp theApp = new MyApp(); theApp.enterEventDispatcher(); } /** * Creates a new MyApp object */ public MyApp() { // Push a screen onto the UI stack for rendering. pushScreen(new MyScreen()); } }4. Now create MyScreen.java and copy following code this is display screen and initialize icon and message indicator. 5. Set Indicator icon on /img folder please set name "Indicator.png" if image name different then please specify on code.
import java.util.Vector; import net.rim.blackberry.api.messagelist.ApplicationFolderIntegrationConfig; import net.rim.blackberry.api.messagelist.ApplicationIcon; import net.rim.blackberry.api.messagelist.ApplicationIndicator; import net.rim.blackberry.api.messagelist.ApplicationIndicatorRegistry; import net.rim.blackberry.api.messagelist.ApplicationMessageFolder; import net.rim.blackberry.api.messagelist.ApplicationMessageFolderRegistry; import net.rim.device.api.collection.ReadableList; import net.rim.device.api.system.ApplicationDescriptor; import net.rim.device.api.system.EncodedImage; import net.rim.device.api.ui.container.MainScreen; /** * A class extending the MainScreen class, which provides default standard * behavior for BlackBerry GUI applications. */ public final class MyScreen extends MainScreen { /** * Creates a new MyScreen object */ public MyScreen() { setTitle("Title"); ReadableListImpl mylist= new ReadableListImpl(); ApplicationMessageFolder folder = null; ApplicationFolderIntegrationConfig config = new ApplicationFolderIntegrationConfig(true, true, ApplicationDescriptor.currentApplicationDescriptor()); if(ApplicationMessageFolderRegistry.getInstance().getApplicationFolder(0x33c7ce29883abe5fL)==null){ folder = ApplicationMessageFolderRegistry.getInstance().registerFolder(0x33c7ce29883abe5fL, "Test Folder", new ReadableListImpl(),config ); }else { folder = ApplicationMessageFolderRegistry.getInstance().getApplicationFolder(0x33c7ce29883abe5fL); } //DemoMessage source is available in the messagelistdemo. DemoMessage msg = new DemoMessage("me@here.com", "Pizza Toppings","What would you like on your pizza?", System.currentTimeMillis()); mylist.addMessage(msg); folder.fireElementAdded(msg,true); System.out.println("nr of messages"+folder.hasNewMessages()); ApplicationIndicatorRegistry reg = ApplicationIndicatorRegistry.getInstance(); EncodedImage image = EncodedImage.getEncodedImageResource("Indicator.png" ); ApplicationIcon icon = new ApplicationIcon( image ); ApplicationIndicator indicator = reg.register( icon, false, true); indicator.setNotificationState(true); ApplicationIndicator appIndicator = reg.getApplicationIndicator(); appIndicator.setIcon(icon); appIndicator.setValue(appIndicator.getValue() + 1); // appIndicator.setNotificationState(true); appIndicator.setVisible(true); } /** * This is an implementation of the ReadableList interface which stores the * list of messages using a Vector. */ static class ReadableListImpl implements ReadableList { private Vector messages; /** * Creates a empty instance of ReadableListImpl */ ReadableListImpl() { messages = new Vector(); } /** * @see net.rim.device.api.collection.ReadableList#getAt(int) */ public Object getAt(int index) { return messages.elementAt(index); } /** * @see net.rim.device.api.collection.ReadableList#getAt(int, int, Object[], int) */ public int getAt(int index, int count, Object[] elements, int destIndex) { return 0; } /** * @see net.rim.device.api.collection.ReadableList#getIndex(Object) */ public int getIndex(Object element) { return messages.indexOf(element); } /** * @see net.rim.device.api.collection.ReadableList#size() */ public int size() { return messages.size(); } /** * Add a message to this list * * @param message The message to add to this list */ void addMessage(DemoMessage message) { messages.addElement(message); } /** * Removes a message from this list * * @param message The message to remove from this list */ void removeMessage(DemoMessage message) { messages.removeElement(message); } } }6. Run application.
7. Output
Indicator Icon display:
Notification Icon display: