我正在使用带有各种标签的 Activitiy 。从应用程序的不同部分创建通知,以告知用户某些内容已更改。当用户点击通知时,我现在设法调用活动。但是,我怎样才能确定在运行时或点击通知时以“正常”方式创建活动?
(根据点击的通知,我想转发到另一个标签,而不是显示主标签。)
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。但是,当pendingIntent
?
考虑在主要活动中定义类似的内容:
onTriggeredByNotification(Notification noti){
//determinte tab, depending on Notification.
}
答案 0 :(得分:20)
从通知中传递一个布尔值,并在活动的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 :(得分:1)
您可以在通知
中尝试此操作Intent intent=new Intent();
intent.setAction("Activity1");
在活动覆盖onNewIntent()
方法并获取操作,以便您可以确定是否调用了活动。
答案 2 :(得分:1)
比使用@ricintech指定的意图的保留操作字段更好,您可以在待处理意图中使用额外参数,并在onCreate
方法和onNewIntent
方法中检测到它你的活动。