我在测试项目中有这个工作,但当我尝试在我正在进行的实际项目中实现它时,它根本不起作用。
我正在尝试设置闹钟,但它无法正常工作。我真的不知道什么是错的,对这个问题的描述无济于事。我已经检查了我可能遇到的每个常见问题,但仍然......
以下是一些代码:
SilenciadorReceiver :(这是一个广播接收器)
@Override
public void onReceive(Context context, Intent intent) {
blablabla code blablabla (breakpoint in the first valid line of code)
Show a toast at the end (not working)
}
public static activateAlarm(Context context, long alarmTime, int action) {
AlarmManager alarms = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, SilenciadorReceiver.class);
intent.putExtra("action", action);
PendingIntent pending = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
alarms.set(AlarmManager.RTC_WAKEUP, alarmTime, pending);
}
// The horario variable here has the format "16:00", it represents the hour and minute in 24H format
private static long getTimeMillis(String horario) {
Calendar updateTime = Calendar.getInstance();
int hora = Integer.parseInt(horario.split(":")[0]);
int minuto = Integer.parseInt(horario.split(":")[1]);
updateTime.set(Calendar.HOUR_OF_DAY, hora);
updateTime.set(Calendar.MINUTE, minuto);
updateTime.set(Calendar.SECOND, 0);
return updateTime.getTimeInMillis();
}
清单:(我也有启动完成权限)
<receiver
android:name=".activities.SilenciadorReceiver"
android:label="@string/app_name"
android:process=":remote" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
我正在调试它并手动设置变量alarmTime,使用Epoch Converter解析时间(我在几毫秒内将时间传递给Java,而不是几秒钟)。在我开始手动设置此变量之前,我尝试使用System.currentTimeMillis()和上面描述的getTimeMillis()函数,但它也无法正常工作
基本上,警报已设置,至少它看起来已设置好,但它从未被调用过。