【问题标题】:Android: Keep Notification activeAndroid:保持通知处于活动状态
【发布时间】:2011-10-31 14:38:28
【问题描述】:

在我正在进行的这个项目中,创建了一堆警报,当它们响起时,这就是我目前正在发生的事情..

  1. 警报响起

  2. 通知放在状态栏

  3. 当用户选择通知时,它会将他们带到应用中的特定 Activity 以处理当前处于活动状态的通知

  4. 只要有未处理的通知,通知就会停留在状态栏中

现在的问题是,当用户从通知中心选择警报时,它会停留在那里,但它会变成“死”,如果用户离开应用程序,然后再次单击该通知,则不会花费用户回到应用程序,这就是 LogCat 所说的......

StatusBar - Sending contentIntent failed: android.app.PendingIntent$CanceledException
InputManagerService - Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@44f94258

我想出了一个可以解决这个问题的解决方案......还有其他人处理过这个问题吗?

【问题讨论】:

  • 请在您创建通知的位置添加代码。
  • @user978808:“只要有未处理的通知,通知就会停留在状态栏中”——这没有意义
  • 它停留在那里,但是在用户单击它一次后,通知会停留在状态栏中,但我猜你可以说它是“死的”。它不会直接返回活动,您只需单击它就不会发生任何事情。
  • 您在调用 PendingIntent.getActivity(...) 时提供了哪些标志?使用 PendingIntent.FLAG_ONE_SHOT 标志时,我在 LogCat 中有相同的消息,但在不使用标志或 PendingIntent.FLAG_CANCEL_CURRENT 时没有。

标签: java android notifications statusbar


【解决方案1】:

答案:requestCode 和 Notification ID 必须匹配,见下面我对iAlertUniqueID 的使用:

notification.contentIntent = PendingIntent.getActivity(context, iAlertUniqueID, targetActivityIntent, Intent.FLAG_ACTIVITY_NEW_TASK);
notificationMgr.notify(iAlertUniqueID++, notification);

iAlertUniqueID 在我的类中只是一个静态 int(不是 final!),它扩展了 BroadcastReceiver

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-03
    • 2014-11-16
    • 2012-05-24
    • 2021-09-13
    • 2018-11-26
    • 2013-08-27
    • 2019-09-01
    • 1970-01-01
    相关资源
    最近更新 更多