2011-06-17 11 views
2

中設置,因爲當電話啓動時AlarmManager被清除,我創建了一個BootReceiver類,在這種情況下應該重置警報。 但即使該類的其他代碼以某種方式執行,AlarmManager也不會被設置,所以AlarmReceiver類永遠不會被調用。下面是從BootReceiver類我的代碼部分:AlarmManager未從Bootreceiver

Calendar Od = Calendar.getInstance(); 
Od.set(yearOd, monthOd, dayOd, hourOd, minuteOd); 

AlarmManager AM =(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);

     int id= rebootCursor.getInt(ToDoDBAdapter.ID_COLUMN); 

         Intent i = new Intent(context, AlarmReceiver.class); 
         i.putExtra("alarm_message", "stavi_vibracii"); 
         i.putExtra("doVreme",vremeDo); 
         i.putExtra("doDatum",dateDo); 
         PendingIntent sender = PendingIntent.getBroadcast(context, id, i, PendingIntent.FLAG_UPDATE_CURRENT); 
         am.set(AlarmManager.RTC_WAKEUP, Od.getTimeInMillis(), sender); 

我要指出,我已經註冊了BootReceiver和AlarmManger在清單文件,和我的應用程序內設置報警時everyhting工作的罰款。如果有人有類似的問題或有回答我的問題,請讓我知道.. 感謝ü

+0

請人幫助我也陷在這種情況下。 –

+0

查看接受答案中的鏈接。希望有所幫助! – Sandra

回答

1

您可能需要設定喚醒鎖,以保持手機清醒足夠長的時間來完成你的任務。在這裏看到的信息:

https://github.com/commonsguy/cwac-wakeful

http://www.androidguys.com/2009/04/02/wake-up-with-the-alarm/

+0

好的,我會檢查這個。Thx – Sandra

+0

@Sandra這個解決方案適合你嗎?根據我的理解,這不是你問的問題,我面臨同樣的問題報警不設置,但其他代碼正在執行。您接受的答案處理報警代碼或在報警時間執行的代碼。 –

0

幾件事情要檢查:

  • 你BootReceiver實現爲BroadcastReceiver
  • 你已經添加了RECEIVE_BOOT_COMPLETED許可,您的清單

這樣的:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
  • 您已經註冊了您的開機接收器的正確意圖過濾

這樣的:

<receiver android:name=".BootReceiver"> 
    <intent-filter> 
     <action android:name="android.intent.action.BOOT_COMPLETED"/> 
    </intent-filter> 
</receiver> 
+0

謝謝你的回覆,但是,是的,我的BootReceiver類是作爲BroadcastReceiver實現的(擴展了BroadcastReceiver),我在清單中擁有所需的權限和意圖過濾器。我的問題不是bootreceiver類,因爲這個類是在啓動時調用的,但不知怎的,警報​​不能從它設置。有另一種方法可以做到這一點嗎? – Sandra

+0

我也嘗試過定義一個新的服務,我開始在電話上啓動,並且實現了與設置鬧鐘但是沒有運氣相同的邏輯(我在此線程中編寫的前一個代碼):(我真的不知道爲什麼它不工作,或者我在做什麼錯... – Sandra