Приложение не показывает уведомление от Broadcast Reciever в Android 4.2.2 - PullRequest
0 голосов
/ 20 февраля 2019

Я использую Alarm Manager и Broadcast Reciever для отображения уведомления в определенное время каждый день, но это не работает должным образом на некоторых устройствах.

Код для уведомления в Broadcast Reciever:

when = System.currentTimeMillis();
cr = new Controller(context);
NotificationManager notificationManager = (NotificationManager) context
        .getSystemService(Context.NOTIFICATION_SERVICE);

Intent notificationIntent = new Intent(context, GetWordsActivity.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,
        notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);

RemoteViews notificationLayout = new RemoteViews(context.getPackageName(), R.layout.notify_addwords);
RemoteViews notificationLayoutExpanded = new RemoteViews(context.getPackageName(), R.layout.notify_addwords);

NotificationCompat.Builder mNotifyBuilder = (NotificationCompat.Builder) new NotificationCompat.Builder(
                context).setSmallIcon(R.drawable.ic_morning)
                .setCustomContentView(notificationLayout)
                .setCustomBigContentView(notificationLayoutExpanded)
                .setAutoCancel(true).setWhen(when)
                .setOngoing(true)
                .setContentIntent(pendingIntent);
        notificationManager.notify(MID, mNotifyBuilder.build());

Создание будильника (из MainActivity):

void nextDayCalendar()
{
    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.HOUR_OF_DAY, 6);
    calendar.set(Calendar.MINUTE, 30);
    calendar.set(Calendar.SECOND, 0);
    if(calendar.getTime().compareTo(new Date()) < 0) calendar.add(Calendar.DAY_OF_MONTH, 1);
    Intent intent1 = new Intent(MainMenuActivity.this, NextDayCalendarReciever.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(MainMenuActivity.this, 0,intent1, PendingIntent.FLAG_UPDATE_CURRENT);
    AlarmManager am = (AlarmManager) MainMenuActivity.this.getSystemService(MainMenuActivity.this.ALARM_SERVICE);
    am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
}

Вещательный приемник:

public class NextDayCalendarReciever extends BroadcastReceiver {
Context context;

@Override
public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
    // Notification Code is here
    this.context = context;
}

Манифест:

<receiver android:name=".NextDayCalendarReciever" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...