Использование широковещательного приемника для запуска AlarmManager в Android? - PullRequest
4 голосов
/ 07 марта 2012

Я пишу программу, которая запускает намерение периодически запускать службу, для этого я решил использовать 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);

}
}

Ответы [ 2 ]

9 голосов
/ 07 марта 2012

Попробуйте

AlarmManager am = (AlarmManager)context.getSystemService(Service.ALARM_SERVICE);
1 голос
/ 22 августа 2014

Я обнаружил, что если вы находитесь во фрагменте, вы можете сделать это

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