Android应用程序正在后台运行状态。在Firebase控制台中创建了一条通知消息,其中包含高级选项中的有效内容。收到通知并显示在设备的系统托盘上后,单击通知将返回到应用程序,并且数据有效负载未在启动器活动的意图中附加。默认情况下,通知不会按照文档中的指定打开应用程序启动器。为什么设备的系统托盘中的通知正在启动活动,但有时它只是通常点击应用程序图标进入应用程序?
答案 0 :(得分:0)
您在MainActivity中使用了什么,如果您要发送通知并且应用程序位于前台,那么它将带您进入该特定页面。但如果您的应用是后台应用,那么点击通知托盘即可启动您的应用。在这里,如果您想要点击通知,它应该引导您到特定页面,那么您必须在MainActivity中使用这段代码。
if (getIntent().getExtras() != null) {
Intent intent = new Intent(MainActivity.this, NotificationActivity.class);
startActivity(intent);
}
答案 1 :(得分:0)
检查您的启动器活动清单中是否有android:launchMode =“ singleTop”,并且您尝试读取onCreate()方法中的其他内容。
如果是这种情况,则只会创建该类的1个实例,因此,当用户在任务栏中触摸通知时活动处于后台时,调用的方法是onNewIntent()。在这种方法中,您可以通过以下方式获得额外内容并将其放入一般意图中:
@Override
public void onNewIntent(Intent intent){
super.onNewIntent(intent);
setIntent(intent);
}
然后onResume()可以使用getIntent()。getExtras()来访问其他内容。
编码愉快!
答案 2 :(得分:0)
当您的应用程序处于后台时,您将在启动程序活动中将所有数据捆绑在一起。要获取这些值,请确保覆盖启动器活动中的onNewIntent。就我而言,这是启动屏幕。
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
if (intent.getExtras() != null) {
for (String key : intent.getExtras().keySet()) {
Object value = intent.getExtras().get(key);
Log.d("data ", "Key: " + key + " Value: " + value);
}
}
}