您好我已创建通知意图如下
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK );
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(getNotificationIcon())
.setContentTitle(title)
.setContentText(text)
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent);
int notification_id = (int) System.currentTimeMillis();
notificationManager.notify(notification_id, notificationBuilder.build());
如果应用关闭,一切都很完美。但是如果app在后台运行,它只会将上次打开的活动从后台弹出到前台。我想转到数据中收到的确切页面。
有人帮忙,我尝试了FLAGS
的许多组合。
答案 0 :(得分:3)
试一试这个
PendingIntent.getActivity(context, 0, notificationIntent, Intent.FLAG_ACTIVITY_NEW_TASK);
而不是
PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
答案 1 :(得分:0)
而不是这个
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK );
在你的意图中尝试这个
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
<强> FLAG_ACTIVITY_SINGLE_TOP 强> 如果设置了此标志,则如果活动已在历史堆栈的顶部运行,则不会启动该活动。
答案 2 :(得分:0)
AS @rahul指出,如果您将PendingIntent.FLAG_UPDATE_CURRENT
更改为Intent.FLAG_NEW_ACTIVITY_TASK
,它可以按照我的要求运行,但我建立的一个问题是,如果您在通知栏中有多个通知,则只有一个操作可用。当点击剩下的那些时,它将从那里清除,没有任何动作将起作用。以下是正确的解决方案 -
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP );
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(getNotificationIcon())
.setContentTitle(title)
.setContentText(text)
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent);
答案 3 :(得分:0)
为清除现有任务添加标记并启动新任务。
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);
答案 4 :(得分:0)
如果您想使用Intent.FLAG_ACTIVITY_CLEAR_TASK
,也必须使用 Intent.FLAG_ACTIVITY_NEW_TASK
。它甚至在文档中说明了这一点。