在Android中使用广播接收器启动AlarmManager?

4
我正在编写一个程序,定期启动意图以启动服务。为此,我决定使用AlarmManager。在活动中,我能够很容易地实现所需的功能,但是当我尝试在接收器中执行相同操作时,出现了一个错误,我无法解决它。
代码如下:AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE); 该代码提示 ALARM_SERVICE 未定义变量。
以下是该接收器的完整代码:
package com.testapp21.second.activities;

import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.SystemClock;

public class PhoneOnReceiver extends BroadcastReceiver {
private PendingIntent mAlarmSender;

@Override
public void onReceive(Context context, Intent intent) {
    mAlarmSender = PendingIntent.getService(context,
              0, new Intent(context, StatsCheckerService.class), 0);

    // We want the alarm to go off 30 seconds from now.
      long firstTime = SystemClock.elapsedRealtime();

      // Schedule the alarm!
      AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
      am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
                      firstTime, 30*1000, mAlarmSender);

}
}

1
当你说“ALARM_SERVICE无法解析为变量”时,你是指在运行时出现异常还是什么? - Rasive
编译器出现了错误,有一条红色的下划线。我猜想这可能与广播接收器中上下文不同有关,但我不确定如何修复它。 - Edmund Rojas
2个回答

9

尝试

AlarmManager am = (AlarmManager)context.getSystemService(Service.ALARM_SERVICE);

1
我发现如果你在一个片段中,你可以这样做。
AlarmManager am = (AlarmManager)getActivity().getSystemService(Service.ALARM_SERVICE);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接