Android 如何停止报警管理器?

Android 如何停止报警管理器?,android,alarmmanager,Android,Alarmmanager,我已经创建了如下所示的启动警报 public class MyScheduleReceiver extends BroadcastReceiver { // Restart service every 30 seconds private static final long REPEAT_TIME = 1000 * 5; @Override public void onReceive(Context context, Intent intent) { AlarmManager s

我已经创建了如下所示的启动警报

 public class MyScheduleReceiver extends BroadcastReceiver {

   // Restart service every 30 seconds
private static final long REPEAT_TIME = 1000 * 5;

@Override
public void onReceive(Context context, Intent intent) {
  AlarmManager service = (AlarmManager) context
    .getSystemService(Context.ALARM_SERVICE);
 Intent i = new Intent(context, MyStartServiceReceiver.class);
 PendingIntent pending = PendingIntent.getBroadcast(context, 0, i,
    PendingIntent.FLAG_CANCEL_CURRENT);
Calendar cal = Calendar.getInstance();
cal.add(Calendar.SECOND, 5);
service.setInexactRepeating(AlarmManager.RTC_WAKEUP,
    cal.getTimeInMillis(), REPEAT_TIME, pending);
我把它装在板条箱里作为停止警报,我从主要活动中调用它。我认为是可以的…重复工作但不停止

      public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.setup);

    sendBroadcast(new Intent(this,MyScheduleReceiver.class));

}

public void StopRepeat(View view) {

    sendBroadcast(new Intent(this,MyStopReceiver.class));   

}

 public class MyStartServiceReceiver extends BroadcastReceiver {


 public void onReceive(Context context, Intent intent) {

  Toast.makeText(context, "Repeat service!.",
           Toast.LENGTH_LONG).show();
    }

  public class MyStopReceiver extends BroadcastReceiver {

  // Restart service every 30 seconds
  private static final long REPEAT_TIME = 1000 * 5;

  @Override
  public void onReceive(Context context, Intent intent) {
    AlarmManager service = (AlarmManager) context
        .getSystemService(Context.ALARM_SERVICE);
    Intent istop = new Intent(context, MyStartServiceReceiver.class);
    PendingIntent pending = PendingIntent.getBroadcast(context, 0, istop,
        PendingIntent.FLAG_CANCEL_CURRENT);
    Calendar cal = Calendar.getInstance();
    cal.add(Calendar.SECOND, 5);

      service.cancel(pending);

但服务并没有停止。可能是什么问题?谢谢。

最简单的选择是重新启动设备。(如果您创建了一个
BOOT\u COMPLETED
listener,现在就删除它。)

您还可以通过将用于创建报警的挂起内容传递给来取消报警。您已经编写了执行此操作的代码,但是在
setup.XML
中是否有一个带有XML属性的按钮
android:onClick=“StopRepeat”
?你点击了吗


解决方案

我们最终发现您的清单文件中有一个错误,因此从未调用过
MyStopServiceReceiver

您可以重新启动设备。(除非你已经创建了一个
BOOT\u COMPLETE
BroadcastReceiver,但你也可以禁用它。)你是否已放入清单文件是的,我已完成引导…是的,我已停止按钮…我重新启动,删除引导完成…但没有任何内容…不停止重复!!只有重新启动设备…停止!很好,你可能在不止一个地方启动警报。。。你在MyScheduleReceiver中启动了警报吗?嗯,我不明白为什么警报没有停止。。。请发布
setup.xml
。可能是日历问题?我必须删除它?更改方法?