контекст не может быть преобразован в переменную - следующий пример 5-дневного будильника

Я пытаюсь установить повторяющийся пример тревоги, используя код, взятый из следующего примера SO:

Реализация сигнала тревоги каждые 5 дней, правильный код?

Однако я получаю сообщение об ошибке «контекст не может быть преобразован в переменную» в строке:

PendingIntent pi = PendingIntent.getBroadcast(context, 0, Aintent, 0);

Какие-либо предложения?

public class Alarm extends Service {

    // compat to support older devices
    @Override
    public void onStart(Intent intent, int startId) {
        onStartCommand(intent, 0, startId);
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        // method to check if an alarm must be fired today

        String alarm = Context.ALARM_SERVICE;
        AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        Calendar calendar = Calendar.getInstance();
         calendar = Calendar.getInstance();
         calendar.set(Calendar.DAY_OF_WEEK, 5);
         calendar.set(Calendar.HOUR_OF_DAY, 23);
         calendar.set(Calendar.MINUTE, 0);
         calendar.set(Calendar.SECOND, 0);

         Intent Aintent = new Intent("REFRESH_THIS");

         PendingIntent pi = PendingIntent.getBroadcast(context, 0, Aintent, 0);
        am.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis() , AlarmManager.INTERVAL_DAY, pi);


        // reschedule to check again tomorrow
        Intent serviceIntent = new Intent(Alarm.this, Alarm.class);
        PendingIntent restartServiceIntent = PendingIntent.getService(
                Alarm.this, 0, serviceIntent, 0);
        AlarmManager alarms = (AlarmManager) getSystemService(ALARM_SERVICE);
        // cancel previous alarm
        alarms.cancel(restartServiceIntent);
        // schedule alarm for today + 1 day
        // Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.DATE, 1);

        // schedule the alarm
        alarms.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
                restartServiceIntent);
    }

    @Override
    public void onCreate() {

        // TODO Auto-generated method stub

    }

    @Override
    public IBinder onBind(Intent intent) {

        // TODO Auto-generated method stub

        return null;

    }


    @Override
    public boolean onUnbind(Intent intent) {

        // TODO Auto-generated method stub

        return super.onUnbind(intent);

    }

}

person Amani Swann    schedule 14.06.2013    source источник
comment
Другая проблема - другой исходный код и метод реализации - та же ошибка.   -  person Amani Swann    schedule 15.06.2013


Ответы (1)


PendingIntent pi = PendingIntent.getBroadcast(context, 0, Aintent, 0);

Проблема именно в этой строке. Вы используете переменную context, не объявляя ее. Используйте как

PendingIntent pi = PendingIntent.getBroadcast(this, 0, Aintent, 0);

Также вам нужно вернуть int из onStartCommand

использовать return START_STICKY;

person stinepike    schedule 14.06.2013
comment
Я действительно пытался это сделать. Когда я это делаю, я получаю новую ошибку: этот метод должен возвращать результат типа int - person Amani Swann; 14.06.2013
comment
проверьте мой обновленный ответ - person stinepike; 14.06.2013
comment
вернуть START_STICKY; проблема решена (спасибо!) - person Amani Swann; 15.06.2013