当前位置: 首页 > 知识库问答 >
问题:

通知意图在应用程序的主要活动暂停时在后台打开

西门安宁
2023-03-14

我有一个通知服务正在运行,它将为用户创建一个通知,如果用户单击该通知,它将打开一个活动以显示消息,我用于创建通知的方法是:

public void createNotificationMsg(String name,String doing, boolean persistent){

    PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(),
            0, new Intent(getApplicationContext(), MessageNotificationActivity.class)
                    .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
                            | Intent.FLAG_ACTIVITY_SINGLE_TOP).putExtra("message", doing),
            PendingIntent.FLAG_CANCEL_CURRENT);


    NotificationCompat.Builder notificationBuilder =
            (NotificationCompat.Builder) new NotificationCompat.Builder(getApplicationContext())
                    .setSmallIcon(R.drawable.my_logo_96)
                    .setContentTitle(name)
                    .setContentText(doing)
                    .setPriority(Notification.PRIORITY_HIGH)
                    .setDefaults(Notification.DEFAULT_ALL)
                    .setContentIntent(pendingIntent)
                    .setPriority(Notification.PRIORITY_HIGH)
                    .setColor(Color.parseColor("#1aadce"));

    if (persistent){
        notificationBuilder.setOngoing(true);
    }
    else {
        notificationBuilder.setOngoing(false);
    }

    NotificationManagerCompat notificationManager =
            NotificationManagerCompat.from(getApplicationContext());

    Notification notification = notificationBuilder.build();

    notificationManager.notify(0, notification);
}

MessageNotificationActivity正在使用“android:style/theme.dialog”使其看起来像一个对话框。现在的情况是,当我单击通知时,一切都很顺利,活动就像一个后台没有任何内容的对话框一样打开,但如果应用程序暂停并处于后台,当我单击通知时,它会将应用程序的主要活动放在前面,然后在上面打开MessageNotificationActivity。我怎样才能使通知不把主要活动放在前面,而只对特定的活动有意图呢?

共有1个答案

班经亘
2023-03-14

发生这种情况的原因是,你的对话主题活动与应用程序中的其他活动具有相同的“任务亲和力”,所以当你点击通知时,Android会寻找合适的任务来启动对话主题活动。如果你的应用程序在后台,Android会将其视为与对话主题活动具有相同“任务亲和力”的任务,并将该任务带到前台,并将对话主题活动启动到该任务中。

为了防止这种情况发生,您需要将android:taskaffinity=“”添加到对话框主题活动的清单中的 声明中。这告诉Android将对话主题的活动启动到一个新的任务中,而不是启动到应用程序的任务中。

 类似资料:
  • 我正在从google firebase为我的android应用程序发送推送通知,目标是Android5.0: 我的推送通知代码是: 但为什么?这就像当应用程序在后台时,通知不使用活动代码中的设置,而只使用AndroidManifest中的某种“默认”设置。

  • 上面的代码行是在我的Android库项目中,因为我不知道在这个地方我的主要活动的类。 当在测试设备上通过USB接口部署应用程序时,这就像是一种魅力,但当在4.3设备上安装谷歌Play的应用程序时,就会出现这种错误。 <罢工> 07-03 13:54:19.843:E/DatabaseUtils(2344):向包写入异常07-03 13:54:19.843:E/DatabaseUtils(2344)

  • 当用户在我的通知中单击一个按钮时,我正试图打开,而该应用程序仅在后台运行并提供服务。单击按钮时,这些行在类中被触发: 我已经检查过了,这些行被触发了,所以对按钮的点击做出反应没有问题,但是不会打开。 有什么建议吗?为什么这对我不起作用,我怎么能让它起作用? 我被要求提供更多的代码,因此在我的

  • 杀死应用程序并发送推送,它正在重定向到所需的活动后,处理这个推送,把应用程序放在后台并发送推送。它将恢复最后一个活动,但意向性附加为NULL。

  • 有时当应用程序收到通知时,它不会发出声音。下面是代码段。