2012-03-07 73 views
4

我正在編寫一個程序,定期啓動一個服務的意圖,要做到這一點我已經決定使用alarmmanager,我能夠做到這一點,我想在一個活動相當容易,但林試圖時,我會得到一個錯誤在我無法弄清楚的接收器中做到這一點。使用廣播接收器在Android中啓動AlarmManager?

AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);

告訴我,ALARM_SERVICE不能被解析爲一個變量

這是我爲reciever完整代碼:

package com.testapp21.second.activities; 

import android.app.AlarmManager; 
import android.app.PendingIntent; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.os.SystemClock; 

public class PhoneOnReceiver extends BroadcastReceiver { 
private PendingIntent mAlarmSender; 

@Override 
public void onReceive(Context context, Intent intent) { 
    mAlarmSender = PendingIntent.getService(context, 
       0, new Intent(context, StatsCheckerService.class), 0); 

    // We want the alarm to go off 30 seconds from now. 
     long firstTime = SystemClock.elapsedRealtime(); 

     // Schedule the alarm! 
     AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE); 
     am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, 
         firstTime, 30*1000, mAlarmSender); 

} 

} 
+1

當你說「ALARM_SERVICE不能解析爲變量」你的意思是你在運行時得到一個異常或什麼? – Rasive 2012-03-07 14:24:53

+0

它在編譯器中有一個紅色下劃線的錯誤,我認爲它與廣播接收器中的上下文有所不同,但我不知道如何修復它 – 2012-03-07 14:29:34

回答

9

嘗試

AlarmManager am = (AlarmManager)context.getSystemService(Service.ALARM_SERVICE); 
+0

這可能是最好的答案!只需要看看它是否工作! – 2012-03-07 14:40:23

1

我發現如果喲你在一個片段,你可以做到這一點

AlarmManager am = (AlarmManager)getActivity().getSystemService(Service.ALARM_SERVICE);