我在晚上10:30收到通知.但是当我的设备在晚上10:30关闭然后在我11:00 PM打开我的设备后,我没有收到待处理的通知.所以我不明白问题是什么.任何帮助将不胜感激.
这是我在创建活动中的代码.
Intent alarmIntent = new Intent(CH_Dashboard.this,TimeAlarmEvening.class); PendingIntent pendingIntent = PendingIntent.getBroadcast(CH_Dashboard.this,alarmIntent,0); AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); Calendar firingCal = Calendar.getInstance(); Calendar currentCal = Calendar.getInstance(); firingCal.set(Calendar.HOUR,10); firingCal.set(Calendar.MINUTE,30); firingCal.set(Calendar.SECOND,0); firingCal.set(Calendar.AM_PM,Calendar.PM); long intendedTime = firingCal.getTimeInMillis(); long currentTime = currentCal.getTimeInMillis(); if(intendedTime >= currentTime) { manager.setRepeating(AlarmManager.RTC,intendedTime,AlarmManager.INTERVAL_DAY,pendingIntent); } else { firingCal.add(Calendar.DAY_OF_MONTH,1); intendedTime = firingCal.getTimeInMillis(); manager.setRepeating(AlarmManager.RTC,pendingIntent); }
Intent notificationIntent = new Intent(context,CH_Dashboard.class); notificationIntent.putExtra("fromNotification","notify"); TaskStackBuilder stackBuilder = TaskStackBuilder.create(context); stackBuilder.addParentStack(CH_Dashboard.class); stackBuilder.addNextIntent(notificationIntent); PendingIntent pendingIntent = stackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT); NotificationCompat.Builder builder = new NotificationCompat.Builder(context); builder.setAutoCancel(true); Notification notification = builder.setContentTitle("Demo App Notification") .setContentText("New Notification From Demo App..") .setTicker("New Message Alert!") .setSmallIcon(R.mipmap.ic_launcher) .setContentIntent(pendingIntent).build(); NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.notify(0,notification);
这是我的Boot接收器代码.
if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { Intent alarmIntent = new Intent(context,TimeAlarmEvening.class); PendingIntent pendingIntent = PendingIntent.getBroadcast(context,0); AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); Calendar firingCal = Calendar.getInstance(); Calendar currentCal = Calendar.getInstance(); firingCal.set(Calendar.HOUR,Calendar.PM); long intendedTime = firingCal.getTimeInMillis(); long currentTime = currentCal.getTimeInMillis(); if(intendedTime >= currentTime) { manager.setInexactRepeating(AlarmManager.RTC,1); intendedTime = firingCal.getTimeInMillis(); manager.setInexactRepeating(AlarmManager.RTC,pendingIntent); } }
最后在清单中我宣布了接收器.
<receiver android:name=".model.AutoStart" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> <receiver android:name=".TimeAlarmEvening"> <intent-filter> <action android:name="android.media.action.DISPLAY_NOTIFICATION_EVENING" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver>
解决方法
那天我解决了,但忘了在这里回答.我在清单文件中做了一些更改.只需删除两个意图过滤器中的行类别默认值即可.
<receiver android:name=".model.AutoStart" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> <receiver android:name=".TimeAlarmEvening"> <intent-filter> <action android:name="android.media.action.DISPLAY_NOTIFICATION_EVENING" /> </intent-filter> </receiver>