在android中取消通知报警
我实现了一个类似以下的警报:在android中取消通知报警,android,android-notifications,android-alarms,Android,Android Notifications,Android Alarms,我实现了一个类似以下的警报: calendar.set(Calendar.HOUR_OF_DAY, hour); calendar.set(Calendar.MINUTE, minute); calendar.set(Calendar.SECOND, 0); alarmManager.setRepeating(AlarmManager.RTC, calendar.getTimeInMillis(),
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, minute);
calendar.set(Calendar.SECOND, 0);
alarmManager.setRepeating(AlarmManager.RTC,
calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY,
pendingIntent);
以及广播接收机:
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent service1 = new Intent(context, WeekTickAlarmService.class);
context.startService(service1);
}
}
和一项服务:
public class WeekTickAlarmService extends Service {
@SuppressWarnings({ "static-access", "deprecation" })
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
mManager = (NotificationManager) this.getApplicationContext()
.getSystemService(
this.getApplicationContext().NOTIFICATION_SERVICE);
Intent intent1 = new Intent(this.getApplicationContext(),
MainActivity.class);
intent1.putExtra("notification", true);
Notification notification = new Notification(R.drawable.icon,
Shares.getStringFromResources(this.getApplicationContext(),
R.string.alarm_service_notification_message),
System.currentTimeMillis());
notification.sound = RingtoneManager
.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
intent1.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP
| Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingNotificationIntent = PendingIntent.getActivity(
this.getApplicationContext(), 0, intent1,
PendingIntent.FLAG_UPDATE_CURRENT);
notification.flags |= Notification.FLAG_AUTO_CANCEL;
notification.setLatestEventInfo(this.getApplicationContext(), Shares
.getStringFromResources(getApplicationContext(),
R.string.alarm_service_notification_bar_title), Shares
.getStringFromResources(getApplicationContext(),
R.string.alarm_service_notification_bar_description),
pendingNotificationIntent);
mManager.notify(666, notification);
}
}
我的问题是,当我点击通知时,通知会消失,但在某些设备中,系统会多次通知 类似这样:
public void CancelAlarm(Context context) {
Intent intent = new Intent(context, MyReceiver .class);
PendingIntent sender = PendingIntent
.getBroadcast(context, 0, intent, 0);
AlarmManager alarmManager = (AlarmManager) context
.getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(sender);
}
当我按下通知中的清除按钮时,我没有任何问题!但是当我点击通知时,在很短的时间后它会再次通知!通知后,如果我取消报警,它将继续通知!