Java 黑莓手机;您当前没有新的通知”;
我正在使用下面的代码(特别是Java 黑莓手机;您当前没有新的通知”;,java,blackberry,blackberry-jde,localnotification,Java,Blackberry,Blackberry Jde,Localnotification,我正在使用下面的代码(特别是pushMessage方法)向用户显示一些通知: public final class MyApplicationMessageFolder { public static final long MyFolderId = 0x1256789012F10123L; private ApplicationMessageFolder folder_; private ApplicationIndicator indicator_; pri
pushMessage
方法)向用户显示一些通知:
public final class MyApplicationMessageFolder
{
public static final long MyFolderId = 0x1256789012F10123L;
private ApplicationMessageFolder folder_;
private ApplicationIndicator indicator_;
private MyReadableListImpl collection_;
public void pushMessage(String subject, String message)
{
try
{
if (collection_ == null)
{
collection_ = new MyReadableListImpl();
}
if (indicator_ == null)
{
registerFolderAndIndicator();
}
ApplicationMessage am = new MyApplicationMessage(message, subject);
collection_.addMessage(am);
folder_.fireElementAdded(am);
// Update indicator
int size = collection_.size();
indicator_.setValue(size);
indicator_.setVisible(size > 0);
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
}
private void registerFolderAndIndicator()
{
// registration application folder and indicator
ApplicationMessageFolderRegistry amfr =
ApplicationMessageFolderRegistry.getInstance();
folder_ = amfr.getApplicationFolder(MyFolderId );
if (folder_ == null)
{
folder_ =
amfr.registerFolder(MyFolderId , "My Folder", collection_, true);
ApplicationIcon icon =
new ApplicationIcon(image_ = EncodedImage.getEncodedImageResource("my_icon.png"), true);
int status = ApplicationMessage.Status.INCOMING | ApplicationMessage.Status.UNOPENED;
amfr.registerMessageIcon(0, status, icon);
folder_.setSearchProperties(new ApplicationMessageSearchProperties(true));
folder_.addListener(
new ApplicationMessageFolderListener() {
public void actionPerformed(int action, ApplicationMessage[] messages,
ApplicationMessageFolder folder) {
if (action == ApplicationMessageFolderListener.MESSAGE_DELETED) {
for (int i = 0; i < messages.length; i++)
collection_.removeMessage(messages[i]);
indicator_.setValue(collection_.size());
indicator_.setVisible(collection_.size() > 0);
}
}
},
ApplicationMessageFolderListener.MESSAGE_DELETED |
ApplicationMessageFolderListener.MESSAGE_MARKED_OPENED |
ApplicationMessageFolderListener.MESSAGE_MARKED_UNOPENED,
ApplicationDescriptor.currentApplicationDescriptor());
ApplicationMenuItem[] menu = new ApplicationMenuItem[] {
new ApplicationMenuItem(0) {
public String toString() {
return "Go to application";
}
public Object run(Object context) {
return null;
}
}
};
amfr.registerMessageMenuItems(0, status, menu,
ApplicationDescriptor.currentApplicationDescriptor());
amfr.setBulkMarkOperationsSupport(0, status, true, false);
ApplicationIndicatorRegistry air = ApplicationIndicatorRegistry.getInstance();
air.register(new ApplicationIcon(EncodedImage
.getEncodedImageResource("bar_icon_25.png")),
false, false);
indicator_ = air.getApplicationIndicator();
}
}
class MyApplicationMessage implements ApplicationMessage
{
private String message_;
private String subject_;
private long timestamp_;
public MyApplicationMessage(String message, String subject) {
message_ = message;
subject_ = subject;
timestamp_ = new Date().getTime();
}
public String getContact() {
return "HelloWorld";
}
public Object getCookie(int cookieId) {
return null;
}
public Object getPreviewPicture() {
return image_;
}
public String getPreviewText() {
return message_;
}
public int getStatus() {
return ApplicationMessage.Status.UNOPENED;
}
public String getSubject() {
return subject_;
}
public long getTimestamp() {
return timestamp_;
}
public int getType() {
return 0x01;
}
}
private class MyReadableListImpl implements ReadableList {
private final Vector messages;
MyReadableListImpl() {
messages = new Vector();
}
public Object getAt(final int index) {
return messages.elementAt(index);
}
public int getAt(final int index, final int count,
final Object[] elements, final int destIndex) {
return 0;
}
public int getIndex(final Object element) {
return messages.indexOf(element);
}
public int size() {
return messages.size();
}
void addMessage(final ApplicationMessage message) {
messages.addElement(message);
}
void removeMessage(final ApplicationMessage message) {
messages.removeElement(message);
}
}
}
公共最终类MyApplicationMessageFolder
{
公共静态最终长MyFolderId=0x1256789012F10123L;
私有应用程序消息文件夹;
专用应用程序指示器;
私有MyReadableListImpl集合;
公共消息(字符串主题、字符串消息)
{
尝试
{
if(集合=null)
{
集合=新的MyReadableListImpl();
}
如果(指示符=null)
{
registerFolderAndIndicator();
}
ApplicationMessage am=新的MyApplicationMessage(消息,主题);
收集添加消息(am);
添加了文件夹\ FireElement(am);
//更新指示器
int size=集合大小();
指示器设置值(大小);
指示器设置可见(大小>0);
}
捕获(例外e)
{
System.out.println(e.getMessage());
}
}
专用无效注册表FolderAndIndicator()
{
//注册申请文件夹和指示器
ApplicationMessageFolderRegistry amfr=
ApplicationMessageFolderRegistry.getInstance();
文件夹=amfr.getApplicationFolder(MyFolderId);
如果(文件夹=null)
{
文件夹=
amfr.registerFolder(MyFolderId,“我的文件夹”,集合,true);
应用程序图标=
新的应用程序(image_u=EncodedImage.getencodedimagesource(“my_icon.png”),true);
int status=ApplicationMessage.status.INCOMING | ApplicationMessage.status.UNOPENED;
amfr.registerMessageIcon(0,状态,图标);
文件夹.setSearchProperties(新的ApplicationMessageSearchProperties(true));
文件夹.addListener(
新的ApplicationMessageFolderListener(){
public void actionPerformed(int action,ApplicationMessage[]消息,
ApplicationMessageFolder(文件夹){
if(action==ApplicationMessageFolderListener.MESSAGE\u已删除){
for(int i=0;iApplicationFolderIntegrationConfig config = new
ApplicationFolderIntegrationConfig(true, true,
ApplicationDescriptor.currentApplicationDescriptor());
folder_ = amfr.registerFolder(MyFolderId , "My Folder", collection_, config);
folder_ = amfr.registerFolder(MyFolderId , "My Folder", collection_, true);