单击通知时将数据发送到活动吗?

时间:2019-05-21 09:42:21

标签: android android-intent notifications android-pendingintent

点击通知后,我正在打开一个活动。通知是从服务类激活的。我想将数据发送到从通知中打开的新活动,我正在使用intent1.putExtra(“ lable”,lable);但在新活动中,它使我得到了nullpointer exept。

 intent1 = new Intent(this.getApplicationContext(), simplestop.class);
            intent1.putExtra("lable",lable);

PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent1, 0); 
Notification mNotify  = new Notification.Builder(this)
            .setContentTitle("title" + "!")
            .setContentText("Click me!")
            .setSmallIcon(R.drawable.ic_launcher_background)
                            .setContentIntent(pIntent)
            .setAutoCancel(true)
            .build();

2 个答案:

答案 0 :(得分:0)

我使用此代码将数据发送到activity

Intent intent = new Intent(this, MainActivity.class)
                            .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
                    intent.putExtra("from", "notification");
                    pIntent = PendingIntent.getActivity(this, 3, intent,
                            PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT);

可能是您在设置flag=0时遇到问题,还是尝试将请求code=0更改为任何其他整数。

答案 1 :(得分:0)

发送数据。

Intent intent = new Intent(getApplicationContext(), simplestop.class);
intent.putExtra("lable", lable);

PendingIntent contentIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

final RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.yourLayoutOfNotification);
contentView.setOnClickPendingIntent(R.id.IdOfTheItemYouClick, contentIntent);

尝试在simplestop.class

中检索类似的数据
if (getIntent().getDataString() == null) {
   String lable = Objects.requireNonNull(getIntent().getExtras()).getString("lable");
 }

我认为您需要在onNewIntent处致电simplestop.class 然后在那里检索数据。

如果检索到数据,请尝试创建Log

Log.d("Data", lable);

告诉Log显示什么。