完全启动后不会触发AlarmManager

时间:2017-08-08 21:41:28

标签: android broadcastreceiver alarmmanager bootcompleted

我使用alarmManager发送每日通知。由于alarmManager在重启手机后停止,所以我创建了一个BroadcastReceiver来触发BOOT_COMPLETE,但仍然没有成功。 即使没有烤面包。

BroadcastRreceiver类

package com.aman.dailynoti;

import...




public class BReceiver extends BroadcastReceiver {

 @Override

public void onReceive(Context context, Intent intent) {



    if ((intent.getAction()).equals("android.intent.action.BOOT_COMPLETED")) {

        Toast.makeText(context, "broadcast", Toast.LENGTH_SHORT).show();


        SharedPreferences mpreferences=context.getSharedPreferences("myPreferences",MODE_PRIVATE);
            int h=mpreferences.getInt("hour",14);

            int m=mpreferences.getInt("minute", 30);
        Calendar calendar=  Calendar.getInstance();
        calendar.set(Calendar.HOUR_OF_DAY,h);
        calendar.set(Calendar.MINUTE,m);
        calendar.set(Calendar.SECOND,00);

        Intent notiIntent = new Intent(context, Notification_Receiver.class);

        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 1, notiIntent, PendingIntent.FLAG_UPDATE_CURRENT);

        AlarmManager alarmManager = (AlarmManager) context.getSystemService(ALARM_SERVICE);

        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);

        }

  }
 }

的AndroidManifest.xml

   <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

 <application...>
       <receiver
        android:name="com.aman.dailynoti.BReceiver"
        android:enabled="true"
        android:label="breceiver">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED"/>
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>

        </receiver>

     </application>

2 个答案:

答案 0 :(得分:0)

不要引用我这个,但我相信android只为你的应用程序提供了一个小窗口的时间来做他们在启动时需要做的事情。如果您希望用户在不使用应用程序时收到通知,请查看推送通知。

答案 1 :(得分:0)

你应该使用意图过滤器android.intent.action.QUICKBOOT_POWERON来重启后接收