나는 이것이 중복 질문 일 수 있다는 것을 알고 있지만 다른 질문은 내 대답이 아닙니다.
상태 표시 줄에서 알림 (특히 새 WhatsApp 메시지에 대한 알림)을 가져 와서 콘텐츠를 읽는 앱을 개발 중입니다. 알림 제목과 메시지 내용을 가져 왔습니다.
문제는 하나 이상의 읽지 않은 메시지가 수신되면, 통지는 사용하는 스위치이다 EXTRA_TEXT
에 EXTRA_SUMMARY_TEXT
(예를 들면 다음 반환 "2 new messages"
대신.
특정 기존 앱이하는 것처럼 어떻게 든 메시지를 분리 할 수 있어야합니다 (예 : Snowball은 모든 메시지를 결합하여 한 곳에 표시하여 여러 메시지를 받았지만 아직 읽지 않은 경우에도 메시지 내용을 표시 함).
사용자가 인 텐트를 통해 메시지를 보낼 수 있다는 것을 알고 있습니다. 그러나 들어오는 인 텐트에 액세스 할 수없는 것 같으므로 WhatsApp이 명시 적 인 텐트를 사용하여 메시지를 전송한다고 가정했습니다.
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"
를 컨텐츠로 표시하지 않고 어떻게 표시 할 수 있습니까? 아니면 더 나은 방법이 있습니까?
데이터베이스에 저장할 수 있도록 메시지 내용, 보낸 사람 번호 및 메시지 수신 시간에 액세스해야합니다.
어떤 도움을 주시면 감사하겠습니다.
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();
이 스택 구조를 사용하려면이 알림 스택을 구문 분석하고 애플리케이션에 선택적 정보 만 표시해야합니다.
내 대답이 귀하의 질문을 해결하는 데 도움이되기를 바랍니다.
이 대답은 다음에서 제공됩니다. 여기에 링크 설명을 입력하십시오.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다