我正在写一个闹钟应用程序。 在我的应用程序中,我将下一个闹钟时间用于锁定屏幕:
Settings.System.putString(context.getContext().getContentResolver(),
Settings.System.NEXT_ALARM_FORMATTED, systemAlarmString);
并以这种方式将系统警报图标设置到通知栏的右侧:
Intent alarmChanged = new Intent("android.intent.action.ALARM_CHANGED");
alarmChanged.putExtra("alarmSet", showSystemAlarmIcon);
context.getContext().sendBroadcast(alarmChanged);
并通过NotificationManager将程序图标放入通知栏的左侧
当我的程序设置下一个闹钟时间时,一切都很好。 但是在我关闭程序后的一段时间,锁定屏幕上的下一个闹钟时间和通知栏右侧的系统警报图标消失了。 通知栏左侧的通知图标不会消失。
我发现删除下一个警报不是我的程序。我尝试始终将常量字符串设置为锁定屏幕并始终显示系统警报图标。然而它们消失了:锁定屏幕显示空字符串并且系统警报图标被隐藏。
我想,其他一些程序也可以。但我无法察觉它。
我的测试手机是三星Galaxy S.在模拟器上一切正常,但那里没有第三部分程序。
我发现了问题。
标准闹钟有时会清除下一个闹钟时间。 标准闹钟没有警报,但有时它会醒来并制造坏东西:)
在我的情况下,解决方案是捕获“android.intent.action.ALARM_CHANGED”意图并在稍后恢复下一个警报数据。
答案 0 :(得分:0)
设置闹钟图标,包括一些额外内容。
Intent alarmChanged = new Intent("android.intent.action.ALARM_CHANGED");
alarmChanged.putExtra("alarmSet", enabled);
alarmChanged.putExtra("from", context.getPackageName());
context.sendBroadcast(alarmChanged);
接收动作,“android.intent.action.ALARM_CHANGED”
如果“alarmSet”为false并且“from”不是您想要的(表示另一个app触发警报关闭)
然后重置警报和警报图标。
if (action.equals("android.intent.action.ALARM_CHANGED")) {
boolean enabled = intent.getBooleanExtra("alarmSet", false);
String pkgName = intent.getStringExtra("from");
if (!context.getPackageName().equals(pkgName)) {
if (!enabled) {
// TODO if enabled alarms exist then reset alarm and alarm icon
}
}
}