簡體   English   中英

重啟設備時總是調用BroadcastReceiver的onReceive()函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM