Android 上的 FCM 不会在之前从通知启动应用时触发"onNewIntent"



我想在从通知启动应用程序时打开正确的屏幕。我发现了一个场景,当它没有像我想象的那样工作时。

因此,这是它正常工作的第一个场景:

  1. 应用程序从启动器图标启动
  2. 应用程序已置于后台
  3. 显示商品信息处理通知
  4. 单击它时onNewIntent将调用默认活动。

但是,当应用程序首次从FCM通知启动时,则步骤4。 永远不会发生:

  1. 显示商品信息处理通知
  2. 应用从 FCM 通知启动
  3. 应用程序已置于后台
  4. 显示另一条商品信息处理通知
  5. 单击它时onNewIntent默认活动不被调用

我发现使用和编码确实存在问题。这是一个错误还是我只是错过了什么?

编辑:默认活动launchMode设置为在清单文件中singleTask

参考前面的答案,onNewIntent 被调用用于将 launchMode 设置为 "singleTop" 的活动。

因此,您应该设置的第一件事是清单文件。将活动的启动模式设置为单顶。另一件事是添加带有操作标记的意图过滤器。

样本:

<activity android:name="youPackage.YourActivity"
android:launchMode="singleTop">
<intent-filter>
<action android:name="youPackage.ACTION">
</intent-filter>
</activity>

而且,在您的服务中,只要您在意图过滤器中定义的操作,您就可以调用新意图。

样本:

Intent i = new Intent("youPackage.ACTION");

参考:

  • https://developer.android.com/reference/android/app/Activity.html#onNewIntent(android.content.Intent(
  • https://developer.android.com/guide/topics/manifest/action-element.html

确保在启动器活动中覆盖 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);
}
}
}

相关内容

  • 没有找到相关文章