Android 取消报警通知
我正在尝试取消报警通知,但尽管我取消了它,但在给定的时间内,该通知将不播放,无论是否已禁用 有人能帮我取消具体通知吗 我设置了如下重复通知:Android 取消报警通知,android,notifications,android-notifications,android-pendingintent,android-alarms,Android,Notifications,Android Notifications,Android Pendingintent,Android Alarms,我正在尝试取消报警通知,但尽管我取消了它,但在给定的时间内,该通知将不播放,无论是否已禁用 有人能帮我取消具体通知吗 我设置了如下重复通知: public static void setRepeatingAlarm(String time, int alarmID, String title) { Intent intent = new Intent(a, TimeAlarm.class); intent.putExtra(Constants.CALC_MSG,
public static void setRepeatingAlarm(String time, int alarmID, String title) {
Intent intent = new Intent(a, TimeAlarm.class);
intent.putExtra(Constants.CALC_MSG, title);
Log.v("--", title + " | " + time);
PendingIntent pendingIntent = PendingIntent.getBroadcast(a, alarmID,
intent, PendingIntent.FLAG_CANCEL_CURRENT);
Calendar cal = Calendar.getInstance();
String timeArr[] = time.split(":");
cal.set(Calendar.HOUR_OF_DAY, Integer.valueOf(timeArr[0]));
cal.set(Calendar.MINUTE, Integer.valueOf(timeArr[1]));
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
if (cal.getTimeInMillis() < System.currentTimeMillis()) {
cal.add(Calendar.DAY_OF_YEAR, 1);
}
am.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
(24 * 60 * 60 * 1000), pendingIntent);
}
public static void cancelNotification(String time, int alarmID, String title) {
Intent i = new Intent(a, TimeAlarm.class);
i.putExtra(Constants.CALC_MSG, title);
PendingIntent p = PendingIntent.getBroadcast(a, alarmID, i, 0);
am.cancel(p);
p.cancel();
}
这是我的闹钟服务课:
public class TimeAlarm extends BroadcastReceiver {
NotificationManager nm;
@SuppressWarnings("deprecation")
@Override
public void onReceive(Context context, Intent intent) {
nm = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
nm.cancelAll();
CharSequence from = context.getString(R.string.app_name);
CharSequence message = intent.getStringExtra(Constants.CALC_MSG)
.toUpperCase();
int iconRes = R.drawable.ic_stat_notf_icon;
int notificationID = intent.getIntExtra(Constants.NOTIFICATION_ID, 0);
Intent notificationIntent = new Intent(context, Main.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
notificationIntent, 0);
Notification notif = new Notification(iconRes, message,
System.currentTimeMillis());
notif.flags = Notification.FLAG_AUTO_CANCEL;
SharedPreferences prefs = context.getSharedPreferences(
context.getPackageName(), context.MODE_PRIVATE);
notif.audioStreamType = AudioManager.STREAM_NOTIFICATION;
notif.setLatestEventInfo(context, from, message, contentIntent);
notif.sound = Uri.parse("android.resource://"
+ context.getPackageName() + "/"
+ prefs.getInt(Constants.NOTIF_SOUND, R.raw.al_affassi_full));
nm.notify(notificationID, notif);
// r.play();
}
}
试试这个:
public static void stopAlarm(Context context) {
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent your_intent = new Intent(...);
PendingIntent your_pending_intent = PendingIntent.getBroadcast(context, 0, your_intent, 0);
alarmManager.cancel(your_pending_intent);
}
希望它能帮助你:)等待的意图应该是这样的
public static void cancelNotification(String time, int alarmID, String title) {
Intent i = new Intent(a, TimeAlarm.class);
i.putExtra(Constants.CALC_MSG, title);
PendingIntent p = PendingIntent.getBroadcast(a, alarmID, i, PendingIntent.FLAG_UPDATE_CURRENT);
am.cancel(p);
p.cancel();
}
设置和取消报警的未决意图必须相等。确保您提供相同的alarmId。我想你也必须设置相同的标志:PendingIntent.flag\u CANCEL\u current你能帮我解决这个问题吗@Alejandro Martínez Martínez