java - 安卓定时通知报错

标签 java android android-notifications

我正在使用此代码进行“预定通知”,因此即使应用程序无法正常工作也会显示通知。

但我的 Nexus 和 Android-M 在我使用我的手机时随机出现(在通话期间,在使用 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);
}

编辑:我实际上捕获了异常,但仍然不知道如何修复它。

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) 

最佳答案

我有一个类似的问题,结果我为上下文使用了一个全局变量,结果结果是空的。我可以看到你也在做同样的事情。你的变量

mCtx

包含上下文。如果那是空的,那么你会得到那个错误。 将上下文保存在全局变量中绝不是一个好主意。

关于java - 安卓定时通知报错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36406780/

相关文章:

java - 在 Java 中模拟 if-in 语句

java - Android 使用带有 HTTPS 的 Ksoap2 请求

java - Spring Boot 自动从错误的数据源生成表

java - list 合并失败 : android:exported needs to be explicitly specified for <receiver>

Android:如何在滚动 Horizo​​ntalScrollView 时禁用 ScrollView 的垂直滚动?

Android - 无法设计支持 API 16 至 22 的 ActionBar

android - 为什么首页上的 ViewPager 会重置其他页面的数据?

android - PUSH 通知重复内容为空

android - 为什么在 Android 9 上不显示通知

Android O : Service. stopForeground 等效