Android 无法在broadcastreceiver中的服务集中获取意图数据

Android 无法在broadcastreceiver中的服务集中获取意图数据,android,notifications,broadcastreceiver,alarmmanager,Android,Notifications,Broadcastreceiver,Alarmmanager,我是android开发的新手。我正在开发一个简单的应用程序,其中包含1个活动、1个广播接收器和1个通知服务。有些警报是在活动中设置的,我想在设备启动/重新启动时重新设置它们 以下是我在MainActivity中的代码: //randomDates is an (Long) array of time in milliseconds int len = randomDates.length; AlarmManager[]

我是android开发的新手。我正在开发一个简单的应用程序,其中包含1个活动、1个广播接收器和1个通知服务。有些警报是在活动中设置的,我想在设备启动/重新启动时重新设置它们

以下是我在MainActivity中的代码:

            //randomDates is an (Long) array of time in milliseconds 
            int len = randomDates.length;

            AlarmManager[] alarmManager = new AlarmManager[len];
            ArrayList<PendingIntent> intentArray = new ArrayList();
            String type = "A";
            Long t =  new Date().getTime();
            for (int i = 0; i < len; i++) {
                if(t <= randomDates[i]) {
                    Intent myIntent = new Intent(MainActivity.this, Receiver.class);
                    if (i%2 == 1) {
                        type = "A";
                    } else {
                        type = "P";
                    }
                    myIntent.putExtra("type", type);
                    myIntent.putExtra("time", randomDates[i]);
                    PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, i, myIntent, PendingIntent.FLAG_ONE_SHOT);
                    alarmManager[i] = (AlarmManager) getSystemService(ALARM_SERVICE);
                    alarmManager[i].set(AlarmManager.RTC, randomDates[i], pendingIntent);
                    intentArray.add(pendingIntent);
                }
            }

            sharedPref = getSharedPreferences("MyCalApp",Context.MODE_PRIVATE);
            SharedPreferences.Editor editor = sharedPref.edit();
            editor.putBoolean("areAlarmsAlreadySet", false);
            editor.putString("alarmDates",Arrays.toString(randomDates));
            editor.commit();
我从“活动”中设置的警报中正确获取所有通知。但是获取NullpointerException

Caused by: java.lang.NullPointerException at com.example.android.basicnotifications.NotificationService.onStart(NotificationService.java:38)
这是我从意向书中读额外内容的地方。我在这件事上遗漏了什么? 感谢您的帮助


另外,所有必要的权限都在清单文件中设置。

onReceive()的末尾,您可以执行以下操作:

    intent.setClass (context, NotificationService.class);
    context.startService(intent);
这将以不包含“额外内容”的
意图启动
服务
。这将导致NullPointerException


另外,在
onReceive()
中有以下代码:

Intent myIntent = new Intent(context.getApplicationContext(), NotificationService.class);
...
myIntent.putExtra("type", type);
myIntent.putExtra("time", randomDates1[i]);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, i, myIntent, PendingIntent.FLAG_ONE_SHOT);
这也不行。当您调用
pendingent.getBroadcast()
时,将生成一个
Intent
,它将作为广播
Intent
发送。但是,您传递的是
myIntent
,它用于
服务
,而不是
广播接收器


您需要更加注意您正在做的事情。

onReceive()的末尾,您可以执行以下操作:

    intent.setClass (context, NotificationService.class);
    context.startService(intent);
这将以不包含“额外内容”的
意图启动
服务
。这将导致NullPointerException


另外,在
onReceive()
中有以下代码:

Intent myIntent = new Intent(context.getApplicationContext(), NotificationService.class);
...
myIntent.putExtra("type", type);
myIntent.putExtra("time", randomDates1[i]);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, i, myIntent, PendingIntent.FLAG_ONE_SHOT);
这也不行。当您调用
pendingent.getBroadcast()
时,将生成一个
Intent
,它将作为广播
Intent
发送。但是,您传递的是
myIntent
,它用于
服务
,而不是
广播接收器


你需要更加注意你在做什么。

你需要显示NotificationService.onStart()方法,特别是第38行:)@aelimill,编辑了我的代码。它显示了第38行,在那里我得到了错误信息。:)您需要显示NotificationService.onStart()方法,特别是第38行:)@aelimill,编辑了我的代码。它显示了第38行,在那里我得到了错误信息。:)