【问题标题】:Hiding status bar notification icon for foreground service after raising PRIORITY_MAX notification提高 PRIORITY_MAX 通知后隐藏前台服务的状态栏通知图标
【发布时间】:2014-02-03 10:20:28
【问题描述】:

首先,执行此操作(在运行 4.4.2 的 Nexus 5 上测试):

  • 将 PRIORITY_LOW 通知传递给 Service.startForeground()。
  • 状态栏中不显示观察通知。
  • 使用相同的通知 ID 引发 PRIORITY_MAX 通知。
  • 观察通知显示在状态栏中。

现在,有没有办法从状态栏中删除该图标(Service.stopForeground() 除外)?

我试过调用 NotificationManager.cancel() 和 NotificationManager.cancelAll()。并且还尝试提出相同的原始 PRIORITY_LOW 通知。但是它们都在状态栏中留下了通知图标。

【问题讨论】:

    标签: android android-notifications android-notification-bar


    【解决方案1】:

    这在 Android 4.3 中进行了更改,始终显示前台服务的通知。

    这样做有一个很好的理由,即当系统需要更多资源时,不能终止前台服务。如果没有通知,普通用户就无法知道有什么东西仍在运行并耗尽电池电量。

    如果您不希望收到通知,请考虑改用后台服务。如果确实需要前台服务,用户有知情权。

    阅读更多http://commonsware.com/blog/2013/07/30/notifications-foreground-services-android-4p3.html

    【讨论】:

    • 据我了解,4.3 的更改是强制持续显示通知,而不是状态栏图标。无论如何,Android 4.4.2 不会显示 PRIORITY_LOW 通知的状态图标。这种特殊行为就是 WAI。
    • 哦,我明白了。我想我误解了你的问题。如果可以提高但不能降低优先级,这听起来更像是 Android 中的一个错误。
    【解决方案2】:

    一种解决方法是先拨打Service.stopForeground(),然后拨打Service.startForeground()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-12
      • 2013-03-31
      • 1970-01-01
      • 2014-03-30
      • 2014-07-15
      相关资源
      最近更新 更多