许多人在我面前问了同样的问题,但我都没有回答。 我已经使用 AlarmManager 和 BroadcastReciever 创建了一个警报应用程序。 alarmManager.cancel() 不能正常工作,并且警报会响起,直到该应用被杀死。
我使用相同的 Intent 和参数来设置和取消警报。 以下是设置警报的代码:
public void startAlarm() {
alarmManager= (AlarmManager) getSystemService(Context.ALARM_SERVICE);
intent=new Intent(this, AlarmReceiver.class);
pendingIntent=PendingIntent.getBroadcast(getApplicationContext(),0,intent,0);
alarmManager.set(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),pendingIntent);
}
停止警报:
public void stopAlarm(){
alarmManager= (AlarmManager) getSystemService(Context.ALARM_SERVICE);
intent=new Intent(this, AlarmReceiver.class);
pendingIntent=PendingIntent.getBroadcast(getApplicationContext(),0,intent,0);
alarmManager.cancel(pendingIntent);
}
BroadcastReciever类:
public class AlarmReceiver extends BroadcastReceiver {
MediaPlayer mediaPlayer;
@Override
public void onReceive(Context context, Intent intent) {
mediaPlayer=MediaPlayer.create(context, Settings.System.DEFAULT_ALARM_ALERT_URI);
mediaPlayer.start();
}
}
注:如果在振铃之前停止警报,该代码将正常工作。 但是,一旦警报响起,便无法停止,直到应用终止。
答案 0 :(得分:0)
尝试- alarmManager.set(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY,pendingIntent);
答案 1 :(得分:0)
使用此
public void stopAlarm(){
alarmManager= (AlarmManager) getSystemService(Context.ALARM_SERVICE);
intent=new Intent(this, AlarmReceiver.class);
pendingIntent=PendingIntent.getBroadcast(getApplicationContext(),0,intent,PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.cancel(pendingIntent);
}