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
。可能是日历问题?我必须删除它?更改方法?