安卓的报警管理器

7
我已经创建了一个简单的闹钟应用程序。它工作得很好,但是,如果我手动更改设备的时间,那么我的闹钟就不起作用了...
这是我的代码:
    Calendar = Calendar.getInstance();
    //c.add(Calendar.DAY_OF_WEEK,1);
    c.set(Calendar.HOUR_OF_DAY,15);
    c.set(Calendar.MINUTE, 00);
    c.set(Calendar.SECOND, 00);
    c.set(Calendar.MILLISECOND, 0);

    Intent intent = new Intent(HomeActivity.this, MyAlarmService.class);
    pendingIntent = PendingIntent.getService(HomeActivity.this, 0, intent, 0);
    alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
    alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, c.getTimeInMillis(), pendingIntent);

有什么建议吗?

不起作用意味着发生了什么? - Paresh Mayani
嗨@PareshMayani:如果我将闹钟设置为下午5点,然后手动将设备时间设置为下午5点,则闹钟不会响。 - Piyush
5
不行,你需要添加一个接收器来重新设置闹钟。当日期和时区发生变化时,闹钟会被重置,所以使用以下代码:<receiver android:name=".AlarmInitReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.intent.action.TIME_SET" /> <action android:name="android.intent.action.TIMEZONE_CHANGED" /> </intent-filter> </receiver> - Maneesh
设置时间在2-3分钟之前,并等待闹铃响起。 - Paresh Mayani
我也遇到了这个问题。Maneesh的这个问题和评论对我非常有用。 - SIVAKUMAR.J
@Maneesh 请将您的答案添加为答案,以便此问题不会显示在未回答的问题列表中。 - David Wasser
1个回答

7

[将评论中的答案添加到此处]

您需要添加一个接收器来重新设置闹钟..在日期和时区更改时,闹钟会被重置,因此请使用以下代码:

<receiver android:name=".AlarmInitReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.intent.action.TIME_SET" /> <action android:name="android.intent.action.TIMEZONE_CHANGED" /> 
</intent-filter> 
</receiver>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接