如何在电话重新启动后重新启动闹钟?
问题描述:
在我的项目中,我使用AlarmManager
开始Service
每天一次。它工作正常。但是当手机重新启动时它会停止工作。 我通过网络搜索,他们建议开始BroadcastReceiver
听RECEIVE_BOOT_COMPLETED
行动,并重新启动Alarm
。 我不知道该怎么做。 请给我一个简单的方法来重置闹钟。我已经在这里发布了我的代码。如何在电话重新启动后重新启动闹钟?
我的代码开始报警
Intent start_alarm=new Intent(MainPage.this,MailService.class);
PendingIntent pi=PendingIntent.getService(MainPage.this, 100, start_alarm, 0);
AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE,1);
calendar.set(Calendar.HOUR_OF_DAY, 12);
calendar.set(Calendar.MINUTE, 30);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.AM_PM, Calendar.AM);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),1000*60*60*24,pi);
我AlarmService
@Override
public void onStart(Intent intent,int startId){
super.onStart(intent,startId);
//* My Code for sending Mail *//
}
清单Registeration服务
<service android:name=".MailService"/>
答
只需创建一个广播接收器,并将其注册在清单意图action_reboot,然后启动报警的onReceive方法
这是如何注册接收
<receiver android:name="com.packagename.RebootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
这是接收器
public class RebootReceiver extends BroadcastReceiver
{
public void onReceive(Context arg0, Intent arg1)
{
//start your alarm
}
}
待办事项我添加了之前用于在@Amalo中启动闹钟的相同代码? –
是的,你可以在这里添加相同的代码,但是这种方法:onReceive仅在重启后调用 – Amalo
是的。您可以使用已经编码的相同代码到您的BroadcastReceiver实施 – mgokgoz