PendingIntent scheint beim Initialisieren zu starten → error

  • Antworten:1
quidproquo
  • Forum-Beiträge: 6

22.08.2017, 17:41:25 via Website

Hallo :),

der Plan für die App ist, dass sie jeden Morgen um 07:00 Uhr eine Notifikation schickt, was bis jetzt auch funktioniert. Beim ersten Start der App werden Login-Daten abgefragt. Die Sache ist, dass die App abstürzt wenn der Nutzer die Daten nicht schnell genug abgibt.
Das ist der Code in der MainActivity welcher unter anderem läuft, wenn der Nutzer noch nicht abgegeben hat:

Calendar calendar = Calendar.getInstance();
                    calendar.set(Calendar.HOUR_OF_DAY, 7);
                    calendar.set(Calendar.MINUTE, 0);
                    calendar.set(Calendar.SECOND, 0);

                    Intent intent1 = new Intent(this, NotificationClass.class);
                    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 100, intent1, 0);
                    AlarmManager am = (AlarmManager) getSystemService(MainActivity.this.ALARM_SERVICE);
                    am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);

Ich denke, dass NotificationClass gestartet wird weil die Quelle des Absturzes nach logcat Code von loadText.java ist, welche durch die NotificationClass gestartet wird. Kennt jemand das Problem oder hat eine Idee? Ich habe bereits verschiedene flags (der letzte Parameter bei der PendingIntent Initialisierung) probiert.

Danke im Voraus!

logcat:

08-22 14:54:02.217 2762-2762/de.kurt.vertretungsplan E/AndroidRuntime: FATAL EXCEPTION: main
                                                                       Process: de.kurt.vertretungsplan, PID: 2762
                                                                       java.lang.NullPointerException: Attempt to invoke virtual method 'org.jsoup.select.Elements org.jsoup.nodes.Element.select(java.lang.String)' on a null object reference
                                                                           at de.kurt.vertretungsplan.loadText$loadTextAsyncTask.onPostExecute(loadText.java:112)
                                                                           at de.kurt.vertretungsplan.loadText$loadTextAsyncTask.onPostExecute(loadText.java:35)
                                                                           at android.os.AsyncTask.finish(AsyncTask.java:667)
                                                                           at android.os.AsyncTask.-wrap1(AsyncTask.java)
                                                                           at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:684)
                                                                           at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                           at android.os.Looper.loop(Looper.java:154)
                                                                           at android.app.ActivityThread.main(ActivityThread.java:6119)
                                                                           at java.lang.reflect.Method.invoke(Native Method)
                                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
08-22 14:54:02.232 1247-1293/? E/SurfaceFlinger: ro.sf.lcd_density must be defined as a build property
08-22 14:54:02.295 1462-3018/system_process E/EGL_emulation: tid 3018: eglSurfaceAttrib(1174): error 0x3009 (EGL_BAD_MATCH)

Antworten
quidproquo
  • Forum-Beiträge: 6

26.08.2017, 14:56:11 via Website

Die Antwort ist bereits gefunden! Die Benachrichtigung wird auch am selben Tag gesendet, wenn es bereits später ist als im Kalendar (hier 07:00 Uhr) angegeben. Deswegen muss ein Tag auf den Kalendar addiert werden, wenn es der Fall ist, dass die Benachrichtigung bereits geschickt werden müsste.

Antworten