0

在我的項目中,我使用AlarmManager開始Service每天一次。它工作正常。但是當手機重新啓動時它會停止工作。 我通過網絡搜索,他們建議開始BroadcastReceiverRECEIVE_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"/> 

回答

3

只需創建一個廣播接收器,並將其註冊在清單意圖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 
    } 
} 
+0

待辦事項我添加了之前用於在@Amalo中啓動鬧鐘的相同代碼? –

+0

是的,你可以在這裏添加相同的代碼,但是這種方法:onReceive僅在重啓後調用 – Amalo

+0

是的。您可以使用已經編碼的相同代碼到您的BroadcastReceiver實施 – mgokgoz