2011-04-07 120 views
8

我有braodcastreceiver,廣播接收器應安排一個鬧鐘。Android廣播接收器中的AlarmManager

通常我會做

AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); 
am.set(AlarmManager.RTC, time, myPendingIntent); 

的問題是,getSystemService不是隻在Activty廣播接收器可用。我會怎麼做呢?

感謝,A

回答

31

AndyAndroid,

getSystemService()Context的一部分。您需要將您收到Context保存在您的onReceive()方法是這樣的...

private Context mContext; 

@Override 
public void onReceive(Context c, Intent i) { 
    mContext = c; 
} 

Then..where你打電話getSystemService()你用...

AlarmManager am = (AlarmManager) mContext.getSystemService(mContext.ALARM_SERVICE); 
+1

感謝,那70%; - )它必須是AlarmManager am =(AlarmManager)c.getSystemService(Context.ALARM_SERVICE); – AndyAndroid 2011-04-07 15:23:41

+0

ah><正確的是,常量也是Context的一部分,以及... lemme解決這個問題! – 2011-04-07 15:24:13

+0

@WilliamTate:我爲我的廣播接收器註冊了一個動作爲BOOT_COMPLETED的意圖過濾器。所以當手機重新啓動時,應用程序上下文將如何傳遞(首先會傳遞給應用程序上下文嗎?)? – Ashwin 2012-09-07 05:36:28