来自BroadCastReciever的OnRecieve方法未被调用

时间:2018-05-16 22:24:18

标签: android broadcastreceiver android-notifications

我的通知设置如下

VLOOKUP

然后在我的广播接收器上1 = *我设置了这样的

2 = /

这样我就可以检查它是否被调用了。

我也为此设置了清单,

 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);
            }

我已使用此answer进行了检查,但仍然无效。

2 个答案:

答案 0 :(得分:0)

最近围绕广播接收器似乎有很多问题。

来自Broadcast Receiver Overview

  

从Android 8.0(API级别26)开始,系统对清单声明的接收器施加了额外的限制。如果您的应用程序的目标是API级别26或更高级别,则无法使用清单为大多数隐式广播声明接收器(广告不会专门针对您的应用)。当用户正在使用您的应用时,您仍然可以使用上下文注册的接收器。

     

注意:如果您的应用程序的目标是API级别26或更高级别,则您无法使用清单声明隐式广播的接收方(特定地不针对您的应用的广播),除了一些免除该限制的隐式广播。在大多数情况下,您可以改为使用预定作业。

请阅读BroadcastReceiver Overview Page

答案 1 :(得分:0)

Calendar.DAY_OF_MONTH 1 而不是0

开头
  

int DAY_OF_MONTH

     

获取和设置的字段编号,表示该月的某一天。这是DATE的同义词。该月的第一天的价值为1。

可能这是问题吗?你过了日期

上述答案不适合您的问题