![](/img/trans.png)
[英]Android BroadcastReceiver onReceive function does not get called
[英]onReceive() function of BroadcastReceiver always called when device is rebooted
我的程序是通過BroadcastReceiver設置警報。 但是我遇到了問題:設置了警報時間后,我關閉了設備電源。 之后,我啟動設備,並始終調用BroadcastReceiver的onReceive()函數。 這是我的代碼:
<receiver android:name="com.futaba.broadcastservice.AlarmBroadCastReceiver"
>
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"></action>
</intent-filter>
</receiver>
如何解決這個問題?
提前致謝。
您閱讀過BOOT_COMPLETED的文檔嗎? 系統完成引導后,它將運行。
重新啟動后,您可以執行以下操作來重新安排警報時間。
代碼會發送到您的接收器上。
public class AlarmBroadCastReceiver extends BroadcastReceiver {
Context ct;
@Override
public void onReceive(Context context, Intent intent)
{
ct=context;
if(intent.getAction().equals("android.intent.action.BOOT_COMPLETED"))
{
Intent contentIntent = new Intent(ct, AlarmBroadCastReceiver.class);
PendingIntent theappIntent = PendingIntent.getService(ct, 0,contentIntent, 0);
Calendar calendar = Calendar.getInstance();
calendar.set(year, month, day, hour,minute);
AlarmManager am = (AlarmManager) ct.getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), theappIntent);
}
}
可以肯定的是,您必須聲明uses-permission
如下
<application android:icon="@drawable/icon" android:label="@string/app_name">
<receiver android:name="com.futaba.broadcastservice.AlarmBroadCastReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
</application>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.