【问题标题】:Android -> Status bar state changedAndroid -> 状态栏状态已更改
【发布时间】:2012-04-23 16:58:52
【问题描述】:

Android 中是否有可能获取状态栏的状态,尤其是添加了新通知?

如果状态栏中发生了什么事,它需要这个来启动一个活动。我不是指“状态栏窗口”。

也许我可以使用 IntentFilter,例如:

IntentFilter statusBarIntentFilter = new IntentFilter(android.bla.bla.ACTION_STATUSBAR_STATE_CHANGED);

感谢您到目前为止!

BR

【问题讨论】:

    标签: android android-intent notifications statusbar


    【解决方案1】:

    Android 中是否有可能获取状态栏的状态,尤其是添加了新通知?

    不,对不起。您无法从 Android SDK 监视其他应用程序的通知。

    【讨论】:

    • 您好,感谢您的快速回复!我无意窥探另一个应用程序的通知内容。我只想知道,状态栏是否添加了新符号或其他内容。之后我想开始各种活动。我可以使用 AccessibilityService (AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED),但这需要相对较深/危险的权限授权!
    • @ReginaBalusz:恕我直言,您不应该仅仅因为显示通知而“开始各种活动”。通知背后的主要目的是在后台发生值得注意的事情时打断用户。是的,您可以使用可访问性 API 来检测通知,但这些 API 背后的要点是在不干扰现有应用程序流程的情况下提供可访问性功能。突然弹出一个活动将被视为“扰乱现有的应用程序流程”。
    • 关于“不要干扰其他应用程序的流量”,您完全正确!问题是我目前正在编写一个应用程序,它将监听发生的任何日历事件。不幸的是,没有 IntentFilter,它可以用来监听日历触发的“提醒事件”。这个 IntentFilter 可以在 BroadcastReceiver 中使用。我确定的唯一方法是,日历应用程序将通知添加到状态栏以防提醒。所以我想找到一种方法,被告知,一个新的通知被添加到状态栏。我要寻找替代品。
    • 您可以尝试使用内容观察器。前冰淇淋三明治你可以使用“内容://com.android.calendar/”并监控变化。 calendar_alerts 我想存储你想要的东西。然后,您可以监控何时发出通知,并且随着内容提供者中的数据发生变化,您应该能够了解这一点。它没有记录在案,并且正在访问将来可能会更改的数据。说它在 ICS 中发生了变化,因为现在有一个用于访问日历信息的 API,所以我猜想结合两者,你可以实现你想要的。
    • 感谢您的回复安德鲁。我会试试的!
    【解决方案2】:

    Android 中是否有可能获取状态栏的状态,尤其是添加了新通知?

    您可以使用AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED 收听状态栏通知。

    这是关于这个主题的StackOverflow answer,而here is a working example 我是根据这个答案汇总的。实际上,我之所以把这个例子放在一起,是因为一个应用程序本质上是用广告向我妻子的通知栏发送垃圾邮件,而且没有明确的方法来告诉谁是有问题的应用程序。

    【讨论】:

    • 示例应用域已失效
    猜你喜欢
    • 2015-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-08
    • 2015-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多