判断活动是否由通知调用

8
我正在使用一个带有多个选项卡的活动(Activity)。来自应用程序的不同部分,会创建通知以告知用户某些内容已更改。我现在成功地调用了活动(Activity),当用户点击通知(Notification)时。但是,如何确定活动(Activity)是在运行时通过“正常”方式创建的还是通过单击通知而创建的呢?
(根据所单击的通知,我想转到另一个选项卡,而不是显示主选项卡。)
Intent intent = new Intent(ctx, MainActivity.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(ctx, 0, intent, 0);

        // TODO: Replace with .Build() for api >= 16
        Notification noti = new Notification.Builder(ctx)
                .setContentTitle("Notification"
                .setContentText(this.getName())
                .setSmallIcon(R.drawable.icon)
                .setContentIntent(pendingIntent)
                .setDefaults(
                        Notification.DEFAULT_SOUND
                                | Notification.DEFAULT_LIGHTS)
                .setAutoCancel(true)
                .getNotification();

        NotificationManager notificationManager = (NotificationManager) ctx
                .getSystemService(Context.NOTIFICATION_SERVICE);

        // Hide the notification after its selected
        notificationManager.notify(this.getId(), noti); 

这成功地调用了我的MainActivity。但是,当Activity被pendingIntent触发时,是否有一些方法被调用?考虑在Main Activity中定义类似这样的内容:
onTriggeredByNotification(Notification noti){
     //determinte tab, depending on Notification.
}
4个回答

21

从通知传递布尔值并在活动的onCreate方法中检查相同的值。

 Intent intent = new Intent(ctx, MainActivity.class);
 intent.putExtra("fromNotification", true);

...

if (getIntent().getExtras() != null) {
  Bundle b = getIntent().getExtras();
  boolean cameFromNotification = b.getBoolean("fromNotification");
}

1
您可以在您的通知中尝试这个。
Intent intent=new Intent();
intent.setAction("Activity1");

在IT相关的内容中,翻译为中文。仅返回翻译后的文本:

Activity中重写onNewIntent()方法并获取操作,以便您可以确定是否调用了该活动。


1
我尝试过了,但是onNewIntent方法在任何时间都没有被触发。 - dognose
好的,那么尝试在activity的onCreate()方法中获取意图。 - Ricky Khatri

1
与使用@ricintech指定的意图保留操作字段相比,您可以在待处理意图中使用额外的参数,并在您的活动的onCreate方法和onNewIntent方法中检测它,这样会更好。

0
在清单文件中添加android:launchMode="singleTop",然后只有onNewIntent()才会被调用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接