2013-04-20 49 views
0

我無法讓BroadcastReceiver正常工作。 onReceive沒有被調用。我沒有使用服務。我在我的活動的onCreate方法中設置鬧鐘。我也使用RTC_WAKEUP。但是如果我的設備已經清醒了呢? onReceive會被調用嗎?即使設備處於清醒狀態,我也需要調用onReceiver。通常情況下,即使設備處於睡眠狀態,我也需要調用接收器,但我也希望執行手動啓動活動時接收器執行的代碼。這裏是我我開始我的報警:如果設備已經清醒,onReceive是否會在BroadcastReceiver中爲AlarmManager調用

AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
Intent i = new Intent(context, ServiceStarter.class); 
PendingIntent pi = PendingIntent.getActivity(context, 0, i, PendingIntent.FLAG_UPDATE_CURRENT); 
am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), pi); 

在清單:

<receiver android:process=":remote" android:name=".ServiceStarter" android:exported="true"></receiver> 

回答

1

但是,如果我的設備已經醒了嗎? onReceive會被調用嗎?

是的。

這裏是我如何開始我報警:

您正在使用getActivity()。該組件不是Activity。這是一個BroadcastReceiver。使用getBroadcast()構建一個PendingIntent,將觸發BroadcastReceiver

在清單:

刪除android:process="remote",因爲你不需要它,它危害的浪費RAM中的用戶。此外,刪除android:exported="true",因爲您不需要它,並且通過允許任何人觸發BroadcastReceiver來削弱安全性。

相關問題