当我使用内置闹钟应用程序设置闹钟时,通知区域右侧会出现一个图标。但如果我用 AlarmManager 设置警报,它就不会存在。有没有办法让那个图标显示?
我发现闹钟似乎实际上将记录写入 ContentProvider 而不是直接使用 AlarmManager。我明天试一试。
而且似乎提供者不打算被其他应用程序使用。
当我使用内置闹钟应用程序设置闹钟时,通知区域右侧会出现一个图标。但如果我用 AlarmManager 设置警报,它就不会存在。有没有办法让那个图标显示?
我发现闹钟似乎实际上将记录写入 ContentProvider 而不是直接使用 AlarmManager。我明天试一试。
而且似乎提供者不打算被其他应用程序使用。
有没有办法让那个图标显示?
该图标用于作为固件一部分的闹钟应用程序。只有当用户有一个活跃的闹钟闹钟时,该图标才会出现。它不能被 Android SDK 直接操作。
此图标是闹钟应用程序的一部分,而不是 android SDK。Android 有一个内置(库存)闹钟应用程序,但许多供应商(如三星)正在用他们自己的替换它。因此,没有一种安全的方法可以从您的应用程序中显示该特定图标。
最好的方法是制作自己的图标,因为您正在制作一个设置警报的应用程序并且您希望您的用户得到通知。
PS 这是在股票 AlarmClock 应用程序中显示图标的 Activity 代码,正如您在第 181 行中看到的那样,图标的可绘制对象是R.drawable.stat_notify_alarm而不是 Android.R.drawable.stat_notify_alarm 所以你不能使用它。
希望这可以帮助...
(从相关问题的自我回答中交叉发布:控制状态栏中的警报图标)
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。
确实如此。
如果您使用它,如果它在未来随机中断在某些设备上不起作用,请不要感到惊讶。
根据我从您的问题中了解到的情况,您想知道如何使图标出现在通知区域中。
你必须自己编程。该文档很好地概述了这一点。
http://developer.android.com/guide/topics/ui/notifiers/notifications.html