2015-04-17 81 views
0

我知道這可能是一個重複的問題,但其他問題不回答我的問題。消息通知和提取內容

我正在研究一個應用程序,它從狀態欄中提取通知(特別是通知新的WhatsApp消息)並讀取它們的內容。我已經設法取消通知標題和消息內容。

的問題是,當接收到一個以上的未讀消息時,該通知從使用開關EXTRA_TEXTEXTRA_SUMMARY_TEXT(然後返回例如"2 new messages"代替。

它必須能夠將消息以某種方式分離,看到某些現有應用這樣做(例如,雪球將所有消息合併在一個地方,即使在接收到多條消息時仍顯示消息內容,並且仍然未讀)。

我知道用戶可以通過Intents發送消息,但我無法看到以訪問傳入的意圖,並因此認爲WhatsApp使用明確的意圖ts發送消息。

Intent i = new Intent("com.test.testapp.NOTIFICATION_LISTENER"); 

     Bundle extras = sbn.getNotification().extras; 

     if(sbn.getPackageName().contains("com.whatsapp")) 
     { 
      String title = extras.getString(Notification.EXTRA_TITLE); 
      String summary = extras.getString(Notification.EXTRA_SUMMARY_TEXT); 
      String msg = extras.getString(Notification.EXTRA_TEXT); 

      if(msg != null) 
      { 
       i.putExtra("notification_event", msg); 
      } 
      else 
      { 
       i.putExtra("notification_event", summary); 
      } 

     } 
     else 
     { 
      i.putExtra("notification_event","..."); 
     } 
     sendBroadcast(i); 

我的問題:

我如何可以顯示所有接收到的消息沒有得到"2 new messages"作爲內容還是有這樣做的更好的辦法?

我需要訪問郵件內容,發件人的號碼和收到郵件的時間,以便我可以將其保存到數據庫中。

任何幫助,將不勝感激。

回答

2

WhatsApp的應用程序結構發送通知如下:

 Case         Notification 

Message comes from A : Hi     Title : A Text: Hi 

Message comes from A : How are you   Title : A Text: How are you 

              Title : A Text: 2 new messages 


Message comes from B : Hello    Title : B Text: Hello 

              Title : B Text: 1 new message 

              Title : A Text: 2 new messages 

        Title : WhatsApp Text: 3 new messages from 2 conversation 
---- Here comes the stacking ---- 

Message comes from C : Good work   Title : C Text: Good work 

              Title : C Text: 1 new message 

              Title : B Text: 1 new message 

              Title : A Text: 2 new messages 

        Title : WhatsApp Text: 4 new messages from 3 conversation 


---- This way when new sender message comes, previoud notifications also comes and we get callback in NotificationListener ---- 

最後通知附帶了標題爲包名稱:WhatsApp的和文本爲:Y的會話X的消息

要獲取文字:

sbn.getNotification().extras.getCharSequence(Notification.EXTRA_TEXT).toString(); 

要獲得標題:

sbn.getNotification().extras.getCharSequence(Notification.EXTRA_TITLE).toString(); 

要使用此內在張力結構堆疊的工作,我們需要分析該通知棧和我們的應用程序只顯示選擇性信息

我希望我的回答可以幫助解決您的查詢

這個答案在給出:enter link description here

+0

非常感謝你! – chS

+0

它解決了你的問題嗎? – Kushal