当前位置: 首页 > 知识库问答 >
问题:

意向附加始终为空

孙胜泫
2023-03-14

我正在使用FCM进行消息推送,我正在将数据从通知发送到我正在打开的活动。

建筑通知规范:

private void handleNotification(RemoteMessage remoteMessage) {
    String notTitle = remoteMessage.getNotification().getTitle();
    String notBody = remoteMessage.getNotification().getBody();

    Intent resultIntent = new Intent(this, HomeActivity.class);
    resultIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);

    resultIntent.putExtra("pushNotClick", "yes");
    resultIntent.putExtra("pushNotHead", ""+notTitle);

    PendingIntent resultPendingIntent = PendingIntent.getActivity(this, 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);
    mBuilder.setSmallIcon(R.drawable.fb_icon);
    mBuilder.setColor(getResources().getColor(R.color.colorPrimary));
    mBuilder.setContentTitle(notBody)
            .setContentText(notTitle)
            .setAutoCancel(true)
            .setContentIntent(resultPendingIntent);
    NotificationManager mNotificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
        int importance = NotificationManager.IMPORTANCE_HIGH;
        NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, "NOTIFICATION_CHANNEL_NAME", importance);
        notificationChannel.enableLights(true);
        assert mNotificationManager != null;
        mBuilder.setSmallIcon(R.mipmap.icon_not);
        mBuilder.setChannelId(NOTIFICATION_CHANNEL_ID);
        mNotificationManager.createNotificationChannel(notificationChannel);
    }
    assert mNotificationManager != null;
    mNotificationManager.notify((int) System.currentTimeMillis() /* Request Code */, mBuilder.build());
}

在我的活动中,我得到了如下意图:

String notState = getIntent().getStringExtra("pushNotClick");
String notHead = getIntent().getStringExtra("pushNotHead");

但问题是,每次Intent Extras在活动中为空时,我都检查了我在社区中找到的所有可能的原因,但每次响应都是相同的。

我试过下面提到的链接

Intent的额外值始终为空

Android通知PendingIntent Extras null

总是从通知意图android获取数据null

我不确定我哪里做错了。

共有3个答案

南宫胡媚
2023-03-14

你要在onCreate登记吗?如果是这样,请查看onNewIntent。

宇文俊明
2023-03-14

您是否尝试过检查Remote teMessage数据栏?类似于这样:

// Check if message contains a data payload.
    if (remoteMessage.getData().size() > 0) {
        Log.d(TAG, "Message data payload: " + remoteMessage.getData());

        if (/* Check if data needs to be processed by long running job */ true) {
            // For long-running tasks (10 seconds or more) use WorkManager.
            scheduleJob();
        } else {
            // Handle message within 10 seconds
            handleNow();
        }

    }
邢凌
2023-03-14

我甚至在做了很多调试之后,都找不到问题的原因。最后,我改变了向活动发送意向附加信息的方式。现在我正在使用bundle发送数据,它的工作方式很有魅力。这是一种迂回的方式,不是问题的答案,所以我不会接受它作为一个公认的答案。

 类似资料:
  • 我试图将通知中的信息发送到调用的活动,而我的活动中的信息为NULL。 通知的代码为:

  • 我的会发出一个,当用户单击它时启动我的。 这看起来是这样的: 如您所见,应该具有额外的,其值为放在中。 当我单击“现在”这个时,我总是得到作为的值 这是我在中获取值的方式: 日志: 总是有值,我做错了什么? 这样就解决了问题:https://stackoverflow.com/a/18049676/2180161 报价: http://developer.android.com/reference

  • 我正在创建一个应用程序,它包含3个活动,比如说,A,B和c。活动A是主活动,它在应用程序打开时启动。 使用startActivityForResult(intent,1)将活动A称为活动B;活动B返回一个成功捕获的结果,在活动a的onActivityResult中,我使用startActivityForResult(intent2,2)启动活动C; 这是我的活动A的onActivityResult

  • 创建从到的OneToMany关系

  • 问题内容: 我今天在go代码中遇到了奇怪的行为:当我追加到in循环中,然后尝试根据循环的结果创建new时,最后一个重写了previous 。 在这个特殊的例子这意味着 ,和切片的最后一个元素都没有,和分别,但是......始终! 第二个示例- 行为符合预期。 链接至play.golang:https : //play.golang.org/p/INADVS3Ats 经过一番阅读,挖掘和实验后,我发

  • 下面是片段。请注意,我已经恢复到以前的提交,因此丢失了最近的修改,但请查看我编写的代码,然后才注意到始终等于0() 以下是当检测到活动后按: 以下是NoteActivity接收结果调用的方式。 null 我在我的项目上浪费了很多重要的时间,只是想知道是什么使resultCode和requestCode的值丢失了我发送的值。 任何帮助和指导都将不胜感激。非常感谢!