我的应用基本上已经完成了,除了通知。我收到了工作正常和花花公子的通知,除了让它们准确和重复。这个奇异的部分花了我两天的时间来尝试修复但无济于事。
有两件事我想做但不知道怎么做;
(如果使用广播接收器或类似的,请指定哪个文件的代码。由于这个问题,我按照类似帖子的说明撞了几次墙。)
提前谢谢你。 (以下是我当前的代码)
在 MainActivity.class(从 MaterialTimePicker 调用 scheduleNotification())
public void scheduleNotification(int hour, int minute) {
Intent alarmIntent = new Intent(this, AlarmReceiverNotification.class);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, minute);
if (calendar.before(Calendar.getInstance())) {
calendar.add(Calendar.DATE, 1);
}
triggerTime = calendar.getTimeInMillis();
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, PendingIntent.FLAG_IMMUTABLE);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, triggerTime, 24*3600*1000, pendingIntent);
Log.v("Alarm", "Alarm set for " + hour + ":" + minute);
logTimeUntilNotification();
}
在AlarmReceiverNotification.class中
public class AlarmReceiverNotification extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
showNotification(context);
}
private void showNotification(Context context) {
NotificationManager mNotificationManager
= (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.cancelAll();
new NotificationCompat.Builder(context, "1")
.setSmallIcon(R.drawable.ic_pooper_notif)
.setContentTitle(context.getResources().getString(R.string.notificationTitle))
.setContentText(context.getResources().getString(R.string.notificationContent))
.setDefaults(NotificationCompat.DEFAULT_ALL)
.setAutoCancel(true);
}
}
AndroidManifest.xml 中的权限
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
期望发生的是每天重复的确切设定时间的通知,直到被覆盖。
比预定时间晚一个半小时通知实际结果
使用 setExact 准确调用通知但不重复的部分工作结果。
Target Api 最新 (33) 最低为 27