Android 从服务类取消AlarmReceiver

Android 从服务类取消AlarmReceiver,android,service,alarmmanager,Android,Service,Alarmmanager,我和alaram经理一起学习呼叫我的服务。这是我在mainActivity中设置报警管理器的代码 Intent downloader = new Intent(context, AlarmReceiver.class); downloader.putExtra("limit", limit.getSelectedItem().toString()); downloader.putExtra("delay",perMin.getSel

我和alaram经理一起学习呼叫我的服务。这是我在mainActivity中设置报警管理器的代码

Intent downloader = new Intent(context, AlarmReceiver.class);
                downloader.putExtra("limit", limit.getSelectedItem().toString());
                downloader.putExtra("delay",perMin.getSelectedItem().toString());
                downloader.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);    `pendingIntent = PendingIntent.getBroadcast(context, 0, downloader,PendingIntent.FLAG_CANCEL_CURRENT);
alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
int delay = Integer.parseInt(perMin.getSelectedItem().toString());
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,10 * 1000, delay * 1000, pendingIntent);
这是我的警报接收器课程 公共类AlarmReceiver扩展了BroadcastReceiver{

@Override
public void onReceive(Context context, Intent intent) {
    Intent update = new Intent(context, IntervalService.class);
    Log.i(tag, "Call service from Alaram Receiver");
    context.startService(update);
}}

我知道当我想从主活动中取消alarm manager时,可以轻松地呼叫alarmManager。取消(PendingEvent),但我想取消alarm manager以完成我的服务任务,然后像上面一样重新设置。

刚刚修改了您的代码

public void setAlarmManager(boolean cancel){

PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0,downloader,PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
int delay = Integer.parseInt(perMin.getSelectedItem().toString());
if(!cancel)
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,10 * 1000, delay * 1000, pendingIntent);
else
alarmManager.cancel(pendingIntent);

}
需要时调用此函数

要启动:setAlarmManager(false)

要取消:setAlarmManager(true);//在服务中调用此函数


试试看,这可能有用。谢谢。

刚刚修改了您的代码

public void setAlarmManager(boolean cancel){

PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0,downloader,PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
int delay = Integer.parseInt(perMin.getSelectedItem().toString());
if(!cancel)
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,10 * 1000, delay * 1000, pendingIntent);
else
alarmManager.cancel(pendingIntent);

}
需要时调用此函数

要启动:setAlarmManager(false)

要取消:setAlarmManager(true);//在服务中调用此函数


试试看,这可能有用。谢谢。

刚刚修改了您的代码

public void setAlarmManager(boolean cancel){

PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0,downloader,PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
int delay = Integer.parseInt(perMin.getSelectedItem().toString());
if(!cancel)
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,10 * 1000, delay * 1000, pendingIntent);
else
alarmManager.cancel(pendingIntent);

}
需要时调用此函数

要启动:setAlarmManager(false)

要取消:setAlarmManager(true);//在服务中调用此函数


试试看,这可能有用。谢谢。

刚刚修改了您的代码

public void setAlarmManager(boolean cancel){

PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0,downloader,PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
int delay = Integer.parseInt(perMin.getSelectedItem().toString());
if(!cancel)
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,10 * 1000, delay * 1000, pendingIntent);
else
alarmManager.cancel(pendingIntent);

}
需要时调用此函数

要启动:setAlarmManager(false)

要取消:setAlarmManager(true);//在服务中调用此函数


试试看,这可能行得通。谢谢。

只需使用另一个广播,但带有
意图
额外指示应取消警报。只需使用另一个广播,但带有
意图
额外指示应取消警报。只需使用另一个广播,但带有
意图
额外指示应取消警报ed.只需使用另一个广播,但带有
意图
额外指示,指示应取消警报。