我想在应用程序消息文件夹中打开消息时拥有一个侦听器。为此,我使用ApplicationMenuItem,但在注册后,消息再也无法打开。
ApplicationMessageFolderRegistry messagefolderRegistry = ApplicationMessageFolderRegistry.getInstance();
messaageMenuItemListener = new CVSMessaageMenuItemListener();
CVSApplicationMenuItem menuItem = new CVSApplicationMenuItem();
menuItem.registerMenuItemListener(messaageMenuItemListener);
messagefolderRegistry.registerMessageMenuItems(CVSApplicationMessage.TYPE_ALARMS, ApplicationMessage.Status.UNOPENED, new ApplicationMenuItem[]{menuItem});
messagefolderRegistry.registerMessageIcon(CVSApplicationMessage.TYPE_ALARMS, ApplicationMessage.Status.UNOPENED, alarmsIcon);
和menuItem:
public class CVSApplicationMenuItem extends ApplicationMenuItem {
private CVSVector listeners;
CVSApplicationMenuItem(){
super(20);
}
public Object run(Object context) {
if(!(context instanceof CVSApplicationMessage))
return context;
CVSApplicationMessage applicationMessage = (CVSApplicationMessage)context;
if(listeners == null)
return context;
for (int i = 0; i < listeners.size(); i++) {
((ICVSApplicationMessageMenuItemListener)listeners.itemAt(i)).messageReaded(applicationMessage);
}
return context;
}
public void registerMenuItemListener(ICVSApplicationMessageMenuItemListener l){
if(listeners == null)
listeners = new CVSVector();
if(l != null)
listeners.addItem(l);
}
public String toString() {
return null;
}
}
我可以在消息列表中看到消息(从主页通知图标打开),但无法打开它。如果我执行以下操作,它可以工作,但是当它打开的消息时我没有回调:
//messagefolderRegistry.registerMessageMenuItems(CVSApplicationMessage.TYPE_ALARMS, ApplicationMessage.Status.UNOPENED, new ApplicationMenuItem[]{menuItem});
答案 0 :(得分:0)
据我所知,您不再看到系统“消息预览”屏幕。我有同样的问题。当您注册菜单项时,它似乎完全覆盖了打开的操作。我检查了Message List Demo,发现他们在ApplicationMenuItem的run()方法中打开自定义预览消息屏幕。由于我没有找到任何方式用我的消息打开系统“消息预览”屏幕,我也将实现自定义屏幕。