1

アプリの計画は、毎日午前7時に通知を送信することです。物事は、アプリケーションが初めて起動されたときに、一般的に動作するログインデータを要求しますが、ユーザーが十分速く提出していなければアプリがクラッシュします。初期化時にPendingIntentが起動するようです。

これは、ユーザが既に提出されていない場合に実行MainActivityのコードです:私はクラッシュの「ソース」はloadText.javaのコードであるため、NotificationClassが開始されている

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

推測NotificationClassによって開始されます。この計画は、実際には午前7時に毎日始まる帽子です。 誰かがこの問題を知っているか、アイデアを持っていますか?私はすでに別のフラグを試しました。

ありがとうございます! 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) 
+0

問題が何であるかはっきりしていませんが、すぐにアラームが鳴るように修正するよう求めている場合は、こちらをご覧ください:https://stackoverflow.com/questions/36535575/android-prevent-immediate-アラームが発生した場合のアラーム・トリガー・オブ・アラーム・サービス。 –

+0

ありがとうございました。それは今働きます! – quidproquo

答えて

0

あなたはCalendarインスタンスを取得し、7時00分00秒までの時間を設定します。これにより、当日のCalendarの時刻が7:00:00に設定されます。

その後は、次の操作を行います。

am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent); 

これは、後に毎日、今日7時00分00秒で消灯した後、7時00分00秒でますアラームを設定します。 7:00:00以降にこのコードを実行すると、アラーム時刻が過去であるため、アラームがすぐにトリガされます。

これを防ぐには、Calendarの時刻が現在の時刻よりも大きいことを確認する必要があります。そうでない場合は、を呼び出す前に、ある日をCalendar時間に追加する必要があります。

@MikeM。詳細は、android prevent immediate trigger of alarm service if alarm time has passed for the dayを参照してください。

+0

ありがとうございました! – quidproquo

関連する問題