java - 上下文无法解析

标签 java android alarmmanager android-alarms repeatingalarm

我正在尝试使用此处描述的方法来安排每月警报:

How to implement yearly and monthly repeating alarms?

但是我收到两个错误:

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

PendingIntent sender = PendingIntent.getBroadcast(context,

声明“上下文无法解析”和“上下文无法解析为变量”

...有关如何解决此问题的任何建议?

 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) {
        // your method to check if an alarm must be fired today

        PendingIntent sender = PendingIntent.getBroadcast(context,
                Integer.parseInt(Long.toString(id)), intent, 0);

        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(calendar.getTimeInMillis());
        calendar.add(Calendar.SECOND, 30);

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

        calendar.add(Calendar.MONTH, 1);

        am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);

        // reschedule me 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);

    }

}

最佳答案

服务是一个上下文,所以试试这个代码:

AlarmManager am = (AlarmManager)getSystemService(Context.ALARM_SERVICE);

PendingIntent sender = PendingIntent.getBroadcast(this,

关于java - 上下文无法解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17110496/

相关文章:

android - 如何取消一个 AlarmManager

java - 将通知安排在特定日期和时间

java - 处理来自串行端口数组列表的数据

java - 如何增加 TextView 的大小并在 for 循环中获取它的宽度,Android

java - 适用于 Java 的 Firebase 身份验证

android - 错误 : File google-services. 缺少 json。没有它,Google 服务插件将无法运行。

Android:AlarmManager 和 PendingIntent 不会从另一个 Activity 中取消

JavaFX 更新进度条并等待线程完成

android - 如何在部分唤醒锁定期间打开屏幕

java - 从语音形式转录到发音