如何避免在锁定屏幕上消失下一个闹钟时间?

时间:2011-10-26 07:16:35

标签: android

我正在写一个闹钟应用程序。 在我的应用程序中,我将下一个闹钟时间用于锁定屏幕:

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”意图并在稍后恢复下一个警报数据。

1 个答案:

答案 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
            }
        }
    }