2016-04-04 7 views
1

私はこのコードを使用して「予定通知」を作成しています。そのため、アプリがworkignでない場合でも通知が表示されます。Android予定通知エラー

携帯電話を使用しているときにランダムに表示されるAndroid-MのNexusでクラッシュします(電話中、YTアプリを使用するなど)。

スケジュール通知を送信するのは良い方法ですか、悪い方法ですか。

private void scheduleNotification(Notification notification, int delay) { 
    Intent notificationIntent = new Intent(mCtx, NotificationPublisher.class); 
    notificationIntent.putExtra(NotificationPublisher.NOTIFICATION_ID, (int) System.currentTimeMillis()); 
    notificationIntent.putExtra(NotificationPublisher.NOTIFICATION, notification); 
    PendingIntent pendingIntent = PendingIntent.getBroadcast(mCtx, (int) System.currentTimeMillis(), notificationIntent, PendingIntent.FLAG_ONE_SHOT); 
    long futureInMillis = System.currentTimeMillis() + delay; 
    AlarmManager alarmManager = (AlarmManager) mCtx.getSystemService(Context.ALARM_SERVICE); 
    alarmManager.set(AlarmManager.RTC_WAKEUP, futureInMillis, pendingIntent); 
} 

EDIT:私は実際に例外をキャッチし、まだそれを修正する方法がわかりません。

Process: com.ko.makemyhaircut, PID: 2184 
               java.lang.RuntimeException: Unable to start receiver com.ko.makemyhaircut.model.NotificationPublisher: java.lang.NullPointerException: Attempt to read from field 'android.net.Uri android.app.Notification.sound' on a null object reference 
                at android.app.ActivityThread.handleReceiver(ActivityThread.java:2732) 
                at android.app.ActivityThread.-wrap14(ActivityThread.java) 
                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1421) 
                at android.os.Handler.dispatchMessage(Handler.java:102) 
                at android.os.Looper.loop(Looper.java:148) 
                at android.app.ActivityThread.main(ActivityThread.java:5417) 
                at java.lang.reflect.Method.invoke(Native Method) 
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
                Caused by: java.lang.NullPointerException: Attempt to read from field 'android.net.Uri android.app.Notification.sound' on a null object reference 
                at android.app.NotificationManager.notify(NotificationManager.java:213) 
                at android.app.NotificationManager.notify(NotificationManager.java:194) 
                at com.ko.makemyhaircut.model.NotificationPublisher.onReceive(NotificationPublisher.java:17) 
                at android.app.ActivityThread.handleReceiver(ActivityThread.java:2725) 
                at android.app.ActivityThread.-wrap14(ActivityThread.java)  
                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1421)  
                at android.os.Handler.dispatchMessage(Handler.java:102)  
                at android.os.Looper.loop(Looper.java:148)  
                at android.app.ActivityThread.main(ActivityThread.java:5417)  
                at java.lang.reflect.Method.invoke(Native Method)  
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  
+0

あなたはこれまでに解決策を見つけましたか?非常にまれな電話でも同様です。 – FabioC

+0

@FabioC、残念ながら見つからない解決策 –

答えて

1

私は同様の問題がありましたが、私はNULLになることが判明したコンテキストのグローバル変数を使用していました。私はあなたが同じことをしているのを見ることができます。あなたの変数

mCtx 

にはコンテキストが含まれています。それがnullの場合、そのエラーが発生します。 グローバル変数にコンテキストを保存することは決してお勧めできません。

+0

はい、それは悪い習慣でした。ありがとう! –