【问题标题】:Controlling the Alarm icon in status bar控制状态栏中的警报图标
【发布时间】:2014-05-31 01:35:02
【问题描述】:

这个问题与棒棒糖之前的 Android 版本有关。对于 Lollipop API,请查看相关问题:


我想知道如何打开/关闭状态栏中的系统警报图标,如下图所示:

根据我对系统的了解以及我过去阅读的内容,它由内置的系统闹钟应用程序控制。并且 3rd 方应用程序无法在无根设备上控制它。我们没有理由能够控制它。

但是,Timely v1.2.7 控制此图标在我的无根 Galaxy Nexus v4.2.1 和 Nexus 5 v4.4.2 上。所以这是可能的。

我想知道在无根设备上执行此操作的技术是什么。我怀疑是黑客攻击或未记录的代码,但如果有人能解释一下,我仍然感兴趣。

【问题讨论】:

  • 取消闹钟后,图标会消失吗?
  • @Lollipop 是的,警报图标通常在有警报时显示,在没有警报时隐藏
  • 我有一个问题,时钟是通过修改系统时钟数据库建立的。而且它会是一个图标,但是当我删除数据时,图标仍然显示
  • @Lollipop 我认为如果您将所有细节都放在一个全新的问题中,您将很有可能获得帮助。

标签: android alarmmanager alarm android-alarms undocumented-behavior


【解决方案1】:

v5 棒棒糖

Lollipop 终于移除了那些私有 API 功能。从 v5 开始,此技术不再适用。

我专门发布了一个关于棒棒糖的新问题,上面有答案:

棒棒糖前

使用 private api 属性就是这样做的:

protected void setStatusBarIcon(boolean enabled)
{
    Intent alarmChanged = new Intent("android.intent.action.ALARM_CHANGED");
    alarmChanged.putExtra("alarmSet", enabled);
    sendBroadcast(alarmChanged);
}

感谢 Andy Savage 在此 Google 网上论坛帖子中:


重要提示:如上所述,这使用私有的、未记录的属性。正如 Dianne Hackborn 在同一线程中指出的那样,所有常见的警告都适用于此:

请注意,当您看到这样的原始字符串时 (“android.intent.action.ALARM_CHANGED”和“alarmSet”),警钟 您应该会想到这是使用私有 API。

确实如此。

如果你使用它,如果它在未来发生故障,请不要感到惊讶 随机在某些设备上不起作用。

【讨论】:

    猜你喜欢
    • 2015-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-10
    • 2017-02-04
    • 1970-01-01
    相关资源
    最近更新 更多