PendingIntent将无效发送给活动

时间:2018-11-16 09:31:07

标签: null android-pendingintent

我正在尝试将通知中的数据发送到我的newsdetails类。 但它总是将null调整为空。我试过在发送前检查变量中是否确实有数据,而且看起来确实如此,所以我试图找出原因

所以这是我的MyFirebaseMessageService.class

  Intent intent = new Intent(this, NewsDetails.class);
        //intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
       PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

         String Link = data.get("picture_url");
         String Date = data.get("date");
         String Title = data.get("title");
         String Description = data.get("description");
         Log.d("Dateter", Date);
         if (Link != null ) {

             intent.putExtra("Link",Link);
             intent.putExtra("ThumbNail",Link);
         }
         if (Date != null ) {
             intent.putExtra("Date",Date);
         }
        if (Title != null  ) {

            intent.putExtra("Title",Title);
        }
        if (Description !=null ) {
            intent.putExtra("Description",Description);
        }


    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, "channel_id")
                .setContentTitle(notification.getTitle())
                .setContentText(notification.getBody())
                .setAutoCancel(true)
                .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
                .setContentIntent(pendingIntent)
                .setContentInfo(notification.getTitle())
                .setLargeIcon(icon)
                .setColor(Color.BLUE)
                .setLights(Color.BLUE, 1000, 300)
                .setDefaults(Notification.DEFAULT_VIBRATE)
                .setSmallIcon(R.drawable.logo24x24)
                .addAction(R.drawable.logo24x24,"Open",pendingIntent);

,这是我的Newsdetails.class的一部分*(请注意,当我正常使用它从我的应用程序中打开文章时,它将正常打开。它仅从通知中获取Null。但是数据之前在MyFirebaseMessageService.class中有没有其他方法可以从未决事件中获取数据?我出于两个原因使用相同的类,但是使用了相同的变量。

  Bundle bundle = getIntent().getExtras();
        Log.d("Title2",bundle.getString("Title"));
        date.setText(bundle.getString("Date"));
        titletext.setText(bundle.getString("Title"));

1 个答案:

答案 0 :(得分:1)

您必须在致电Intent之前将“附加”添加到PendingIntent.getActivity()

如您所见,您在Intent上添加了“附加”,但在之后,您得到了一个PendingIntent,用于包裹Intent。您传递给PendingIntent的{​​{1}}中没有“附加”。