我使用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>
答案 0 :(得分:0)
不要引用我这个,但我相信android只为你的应用程序提供了一个小窗口的时间来做他们在启动时需要做的事情。如果您希望用户在不使用应用程序时收到通知,请查看推送通知。
答案 1 :(得分:0)
你应该使用意图过滤器android.intent.action.QUICKBOOT_POWERON
来重启后接收