我正在使用带有各种选项卡的活动。从应用程序的不同部分,创建通知以告诉用户某些内容已更改。我现在成功地调用了Activity,当用户点击通知时。但是,我如何确定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
触发时,是否会调用某个方法?
考虑在主活动中定义如下内容:
onTriggeredByNotification(Notification noti){
//determinte tab, depending on Notification.
}
4条答案
按热度按时间vof42yt11#
从notification传递一个布尔值,并在Activity的onCreate方法中检查该值。
...
e1xvtsh32#
您可以在通知中尝试
在Activity中覆盖
onNewIntent()
方法并获取action,以便您确定Activity是否被调用。pobjuy323#
比使用@ricintech指定的intent的保留action字段更好的是,您可以在挂起的intent中使用额外的参数,并在您的
onCreate
方法和Activity中的onNewIntent
方法中检测它。fykwrbwg4#
在manifest文件中添加
android:launchMode="singleTop"
,则只有onNewIntent()
将获得调用