Метод OnRecieve из BroadCastReciever не вызывается - PullRequest
0 голосов
/ 17 мая 2018

Мои уведомления настроены так

 AlarmManager alarmManager = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE);
            Calendar cal = Calendar.getInstance();
            cal.add(Calendar.MONTH, month);
            cal.add(Calendar.DAY_OF_MONTH, day - 1);
            cal.add(Calendar.YEAR, year);
            cal.add(Calendar.HOUR_OF_DAY, Calendar.AM);

            Intent intent= new Intent(getActivity(), Receiver.class);
            PendingIntent broadcast = PendingIntent.getBroadcast(getActivity(), 100, intent, PendingIntent.FLAG_UPDATE_CURRENT);
            if (alarmManager!= null) {
                alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), broadcast);
            }

Затем на моем Broadcast Reciever OnRecieve У меня настроено так

Log.d("Notifiction", "notificationCreated");

Так что я могу проверить, вызывается ли он.

У меня тоже для этого настроен манифест,

<receiver android:name=".MainActivity.Receiver" android:exported="false" >
        <intent-filter>
            <action android:name="NOTIFICATION_SERVICE" />
        </intent-filter>
    </receiver>

Я проверил с этим ответом , но он все еще не работает.

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Calendar.DAY_OF_MONTH начинается с 1 , а не 0

int DAY_OF_MONTH

Номер поля для получения и установки с указанием дня месяца. Это синоним ДАТЫ. Первый день месяца имеет значение 1.

Может быть, это проблема? Вы прошли мимо даты

А приведенный выше ответ не подходит к вашему вопросу

0 голосов
/ 17 мая 2018

В последнее время кажется, что вокруг приемников вещания возникает множество вопросов.

из Обзор приемника вещания :

Начиная с Android 8.0 (уровень API 26), система накладывает дополнительные ограничения на заявленные манифестом приемники.Если ваше приложение предназначено для уровня API 26 или выше, вы не можете использовать манифест для объявления получателя для большинства неявных широковещательных рассылок (широковещательных рассылок, которые не ориентированы конкретно на ваше приложение).Вы по-прежнему можете использовать получателя, зарегистрированного в контексте, когда пользователь активно использует ваше приложение.

Примечание. Если ваше приложение предназначено для API уровня 26 или выше, вы не можете использовать манифест для объявления получателя для неявных широковещательных рассылок (широковещательных рассылок).которые не предназначены конкретно для вашего приложения), за исключением нескольких неявных трансляций, которые освобождены от этого ограничения.В большинстве случаев вместо этого можно использовать запланированные задания.

Прочтите страницу обзора BroadcastReceiver .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...