我正在尝试在Android中使用通知并且遇到了另一个障碍。
在我的清单中我有
<service android:name=".service.MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<service android:name=".service.MyFirebaseInstanceIDService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
在service.MyFirebaseMessagingService我有
public void onMessageReceived(RemoteMessage remoteMessage) {
// handle the notification, snip
}
当应用程序运行时,到目前为止一切正常 - 通知由MyFirebaseMessagingService接收。
问题#1 我希望在每个活动上处理通知 - 我的意思是我基本上需要在每个活动上使用广播接收器。但是,95%的活动将以相同的方式处理通知(将其存储在共享首选项中),但有5%的活动需要做一些不同的事情。如何解决这个问题?
问题#2: 如果应用程序在我收到通知时未打开,则会进入系统托盘,当我点击它时,启动/启动器活动会打开,但我希望它能够进行其他活动。
所以我在启动/启动器活动中覆盖onResume,如此
protected void onResume() {
super.onResume();
Bundle resumingBundle = getIntent().getExtras();
if(resumingBundle != null)
{
Log.d("DEBUG", resumingBundle.getString("message")); // error here
}
}
错误是
java.lang.RuntimeException: Unable to resume activity {com.werdna.apps.testreceivingnotifs/com.andrewb.testnotifapp.StartingActivity}: java.lang.NullPointerException: println needs a message.
如何从意图中访问通知的标题和正文?