无法在Android中取消当前警报

时间:2018-07-18 15:06:43

标签: android broadcastreceiver

我是Android新手。在这里,我没有收到任何错误,虽然调试stopAlarm()方法调试器的过程跨越了所有行,但是没有调用AlarmReceiver。

谁能帮我修复它。

更新:

AlarmActivity.java

public void stopAlarm(Context context) {
        Intent intent = new Intent(context,AlarmReceiver.class);
        intent.setAction("ALARM_OFF");
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, mAlarmId, intent,0);
        AlarmManager alarmManager = (AlarmManager) context.getSystemService(ALARM_SERVICE);
        alarmManager.cancel(pendingIntent);
    }

1 个答案:

答案 0 :(得分:3)

问题出在这里,WakeUpScreen

alarmActivity.stopAlarm();

您正在调用stopAlarm()的{​​{1}}方法,在这种情况下,AlarmActivity()AlarmActivity.this。我只能假设您在null中正在做类似的事情:

WakeUpScreen

这是绝对禁止!无法实例化Android组件(alarmActivity = new AlarmActivity(); ActivityService,{ {1}})使用关键字BroadcastReceiver。只有Android才能创建和初始化这些组件,因为在使用这些组件之前,必须先由框架对其进行Provider设置。

如果要在另一个new中调用一个方法,则需要确保该方法为Context。如果将Activity方法声明为static,您会发现它抱怨一些事情(例如stopAlarm()),这就是为什么您需要重写方法以采用{{ 1}}参数,如下所示:

static