Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. Ваш Intent
используется для явного запуска класса AlarmReceiver
, который является BroadcastReceiver
. Следовательно, вам нужно использовать getBroadcast()
, а не getService()
, чтобы создать объект PendingIntent
.
Заменить
PendingIntent pIntent = PendingIntent.getService(this, 0, intent, 0);
на
PendingIntent pIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
Попробуйте это. Это сработает.
Попробуйте использовать это. Он будет работать для вас
private void setupAlarm(){
Intent intent = new Intent(this, com.logdata.AlarmReceiver.class);
PendingIntent pIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
manager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,SystemClock.elapsedRealtime() + 1, 1000, pIntent);
Log.e("setupAlarm", "Setup alarm complete");
}