Моя задача - установить будильник, чтобы вызвать приемник, чтобы отображать уведомление в определенное время.BroadcastReceiver не может отображать уведомление, когда приложение закрыто/убито
И код отлично работает, если приложение открыто или просто в фоновом режиме.
В то время, когда приложение убивается, приемник все еще может срабатывать при выполнении тревоги.
Однако уведомления не показывались.
Что я могу сделать?
Функция сигнала тревоги:
public static void makeAlarm(Context context,Date date) {
Log.i("Alarm", "makeAlarm");
AlarmManager alarmMgr;
PendingIntent alarmIntent;
alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmReceiver.class);
alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
alarmMgr.set(AlarmManager.RTC_WAKEUP,
date.getTime(), alarmIntent);
}
AlarmReceiver
public class AlarmReceiver extends BroadcastReceiver {
public AlarmReceiver() {
}
@Override
public void onReceive(Context context, Intent intent) {
Log.i("Alarm", "onReceive");
android.support.v4.app.NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.app_logo)
.setContentTitle("Title")
.setContentText("Message");
Intent resultIntent = new Intent(context, MainActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
stackBuilder.addParentStack(MainActivity.class);
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent =
stackBuilder.getPendingIntent(
0,
PendingIntent.FLAG_UPDATE_CURRENT
);
mBuilder.setContentIntent(resultPendingIntent);
NotificationManager mNotificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Random rand = new Random();
mNotificationManager.notify(rand.nextInt(), mBuilder.build());
}
}
Manifest.xml
<receiver
android:name=".receiver.AlarmReceiver"
android:enabled="true"
android:exported="true" />
@Seasons: r У уверен, что onReceive() вызывается, когда убьют приложение из фона? – kevz
@kevz Я уверен, что onReceive() запущен, так как я могу видеть журналы – Season
попытаться отправить сообщение внутри onReceive() coz Код уведомления выглядит хорошо. – kevz