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

Android通知在启动应用程序时保持打开状态

柯乐池
2023-03-14
Intent intent = new Intent(mainActivity, NotificationPublisher.class);
intent.setAction("handle");

PendingIntent pIntent = PendingIntent.getBroadcast(mainActivity, 0, intent, 
                                                    PendingIntent.FLAG_CANCEL_CURRENT);

Notification.Builder builder = new Notification.Builder(mainActivity)
    .setSmallIcon(R.drawable.phone)
    .setContentTitle(title)
    .setContentText(textContent)
    .setAutoCancel(true)
    .setContentIntent(pIntent);
return builder.getNotification();
void handle(Context context, Intent intent) {
    System.out.println("handle");
    Context mainContext = Extension.mainContext;
    Activity mainActivity = Extension.mainActivity;
    Intent launchIntent = new Intent(mainContext, mainActivity.getClass());
    launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(launchIntent);
}
  • 手动设置“自动取消”标志
  • 改用builder.build()
  • notificationmanger取消(id)和/或取消所有
  • 使用NotificationCompat.Builder
  • 对setContentIntent使用常规启动意图,而不是手动调用StartActivity

共有1个答案

梁嘉祥
2023-03-14

根据你的问题中的这个说法:

有趣的是...如果删除对startActivity的调用,通知将关闭。

我假设您的活动只是重新发布通知

 类似资料:
  • 我正在使用Firebase(FCM)向用户显示推送通知,但我遇到了一个奇怪的问题。 我的代码适用于以下场景(使用FirebaseMessagingService): 前台应用 - 在 onReceive() 中接收数据并在应用内显示弹出窗口。 后台应用 - 在 onReceive() 中接收数据并为用户显示通知。如果单击此按钮,应用程序将被带回前台。在LauncherActivity中收到此目的的

  • 我正在我的应用程序中实施谷歌云消息服务(GCM)。我使用gcmIntent服务创建了一个挂起的意图并打开了一个不是启动活动的活动。当应用程序打开时,它工作正常。但当应用程序关闭时,它会打开启动活动而不是所需的活动。我尝试了我能找到的所有解决方案,但都不起作用。我挣扎了一个多星期。任何帮助都将不胜感激。 我的代码 我得到下面的堆栈跟踪

  • 当我长按home键并杀死我的应用程序时,通知从状态栏中删除,但我想在应用程序被杀死时保留它,当应用程序被杀死时,如何在状态栏上保留通知?

  • 我想在用户收到应用程序上的通知时自动启动应用程序。启动程序图标上不会有点击操作。

  • 我正在开发一个应用程序,它使用GCM进行推送通知。 我的问题是关于如何从用户单击通知时打开/启动应用程序。我有两种潜在的情况: A)应用程序已打开,并且驻留在前台或后台,无论哪种方式,我的GCM工作正常,GCM消息到达用户点击通知并意图启动相关活动(通过通知等待意图传递)。 b)应用程序关闭,收到通知,用户再次点击通知,并试图开始相关活动,这是它变得混乱的地方。该应用程序有一个后端,所以现在需要自

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