Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Alarmmanager没有';重启后第二天无法工作_Java_Android_Notifications_Alarmmanager_Alarm - Fatal编程技术网

Java Alarmmanager没有';重启后第二天无法工作

Java Alarmmanager没有';重启后第二天无法工作,java,android,notifications,alarmmanager,alarm,Java,Android,Notifications,Alarmmanager,Alarm,这就是我制造警报的方式 pendingent alarmIntent=pendingent.getBroadcast(getContext(),1,intent,pendingent.FLAG_UPDATE_CURRENT); AlarmManager报警=(AlarmManager)getContext().getSystemService(报警服务); Calendar startTime=Calendar.getInstance(); startTime.set(Calendar.HOUR

这就是我制造警报的方式

pendingent alarmIntent=pendingent.getBroadcast(getContext(),1,intent,pendingent.FLAG_UPDATE_CURRENT);
AlarmManager报警=(AlarmManager)getContext().getSystemService(报警服务);
Calendar startTime=Calendar.getInstance();
startTime.set(Calendar.HOUR\u OF_DAY,hourOfDay);
startTime.set(Calendar.MINUTE,MINUTE);
开始时间设置(日历秒,0);
if(startTime.getTimeMillis()
我在BroadcastReceiver中调用的方法:

private void startAlarm(上下文){
Intent maintent=新的Intent(上下文,MainActivity.class);
PendingEvent contentIntent=PendingEvent.getActivity(上下文,1,mainIntent,PendingEvent.FLAG_UPDATE_CURRENT);
通知经理我的通知经理=
(NotificationManager)context.getSystemService(context.NOTIFICATION\u服务);
Notification.Builder=new Notification.Builder(上下文);
builder.setSmallIcon(R.drawable.l_活动)
.setContentTitle(context.getString(R.string.morn_title))
.setContentText(context.getString(R.string.morn_text))
.setWhen(System.currentTimeMillis())
.setContentIntent(contentIntent);
myNotificationManager.notify(1,builder.build());
}
所以我遇到了这样的问题。当我把闹钟设置为9:51,我的时间是10:00时,闹钟不响了。添加后

if(startTime.getTimeMillis()
闹钟工作正常,但当我重新启动手机时,它就不工作了。我将试着用一个例子来解释:
我的电话时间是23:50。我将闹钟设置为00:05,然后重新启动手机,一直等到00:05。警报也不会响。但是如果我不重新启动我的手机-一切正常。还有一件事:如果我没有设置过去的时间(例如,我的时间是22:00,我将时间设置为22:05,重新启动手机,它就会工作),那么重新启动手机不会有问题。

即使在重新启动后,AlarmManager也不会持续存在。 通过创建BroadCastReceiver使AlarmManager在重新启动后工作,该接收器将在设备启动完成时启动报警

使用
捕获BroadCastReceiver类中的启动活动

您需要在AndroidManifest.xml中添加上述行,如下所示

<receiver android:name=".StartUpReceiver" android:enabled="true" android:exported="false" android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
  <intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED" />
  </intent-filter>
</receiver>
StartUpReceiver
中,您可以通过
AlarmManager
再次创建报警。我建议使用需要在
数据库中
存储报警信息
共享参考
以便在设备完成重新启动时创建报警

public class StartUpReceiver extends BroadcastReceiver {
  @Override
  public void onReceive(Context context, Intent intent) {

      if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {
         ////// reset your alrarms here 
      }

  }
}