5

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


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

Android系统报警图标

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

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

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

4

1 回答 1

8

v5 棒棒糖

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

我专门发布了一个关于 Lollipop 的新问题,其中有一个答案:

前棒棒糖

这是使用私有 api属性的方式完成的:

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

感谢 Andy Savage 在这个 Google Groups 线程上:


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

请注意,当您看到这样的原始字符串(“android.intent.action.ALARM_CHANGED”和“alarmSet”)时,您的脑海中应该会响起警告铃声,表明这是使用私有 API。

确实如此。

如果您使用它,如果它在未来随机中断在某些设备上不起作用,请不要感到惊讶。

于 2014-04-16T10:18:54.667 回答