2012-12-24 21 views
2

我想知道用戶何時從我的應用程序拋出的通知區域(從主屏幕打開 - 點擊應用程序通知圖標)打開郵件。Blackberry - 在applicationMessage打開時收聽

ApplicationMessageFolderListener不起作用,並註冊applicationMenuItem導致消息不再打開(請參閱Blackberry - use of ApplicationMenuItem when opening a message)。

有誰知道如何做到這一點?

+1

ApplicationMessageFolderListener正在執行?並添加了actionPerformed方法? –

+0

是的,它已經實現了,但是隻有一次使用MARK_OLD操作和消息的空數組被調用。請參閱「http://stackoverflow.com/questions/8536271/blackberry-open-application-on-mesage-notification-click」 - 「當用戶打開ApplicationMessage對象時,ApplicationMessageFolderListener.actionPerformed()不會被通知。如果用戶將郵件標記爲打開而未實際打開它,經過一些挖掘,這是設計「 –

回答

0

下面的代碼應該會有所幫助:

ApplicationMessageFolderRegistry registry = 
    ApplicationMessageFolderRegistry.getInstance(); 
ApplicationMessageFolder inbox = 
    registry.getApplicationFolder(MessageListHelper.YOUR_CUSTOM_INBOX_FOLDER_ID); 
ApplicationDescriptor daemonDescr = 
    ApplicationDescriptor.currentApplicationDescriptor(); 

從存儲獲得現有的消息和文件夾進行註冊。

MessageStore messages = MessageListHelper.getMessageStore(); 
ApplicationMessageFolder inbox = 
    registry.registerFolder(MessageListHelper.YOUR_CUSTOM_INBOX_FOLDER_ID, 
    "Inbox", messages.getInboxMessages()); 

將自己註冊爲回調通知的偵聽器。

inbox.addListener(this, ApplicationMessageFolderListener.MESSAGE_DELETED | 
    ApplicationMessageFolderListener.MESSAGE_MARKED_OPENED | 
    ApplicationMessageFolderListener.MESSAGE_MARKED_UNOPENED, daemonDescr); 
messages.setFolders(inbox); 
registry.setRootFolderName(MessageListHelper.ROOT_FOLDER_NAME); 

我剛剛得到的感覺,同時增加監聽到收件箱,你可以在你設置像

ApplicationMessageFolderListener.MESSAGE_DELETED | 
ApplicationMessageFolderListener.MESSAGE_MARKED_OPENED | 
ApplicationMessageFolderListener.MESSAGE_MARKED_UNOPENED 

因此選項錯過了,actionPerformed()是隻得到所謂的第一次將其標記爲舊或其他。

+0

感謝您的答案,但它不適用於我。打開消息時,偵聽器不會被調用。如果我刪除該消息,那麼它被調用。 –

+0

applicationMessageFolder.addListener(alarmsMessageFolderListener, \t \t \t \t \t \t ApplicationMessageFolderListener.MESSAGE_DELETED | \t \t \t \t \t \t ApplicationMessageFolderListener.MESSAGE_MARKED_OPENED | \t \t \t \t \t \t ApplicationMessageFolderListener.MESSAGE_MARKED_UNOPENED,daemonDescr); –