【问题标题】:Context Cannot be Resolved上下文无法解析
【发布时间】:2013-06-14 14:11:29
【问题描述】:

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

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);

    }

}

【问题讨论】:

标签: java android alarmmanager android-alarms repeatingalarm


【解决方案1】:

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

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

PendingIntent sender = PendingIntent.getBroadcast(this,

【讨论】:

  • 谢谢!这解决了有关错误“无法解决上下文”的问题。但是我仍然收到“无法将上下文解析为变量”的消息:PendingIntent sender = PendingIntent.getBroadcast(context, Integer.parseInt(Long.toString(id)), intent, 0);
  • 请注意我的第一个答案:您的服务是一个上下文,因此您可以将“this”用于应该传递上下文的所有函数。 PendingIntent 发件人 = PendingIntent.getBroadcast(this, Integer.parseInt(Long.toString(id)), intent, 0);
  • 啊啊啊啊……谢谢! (另外 - 我的源中有最后一个问题/错误:id 无法解析为变量 - 我没有看到它在我尝试使用的 SO 示例中声明 - 有什么建议吗?)
  • 它是“requestCode”,你可以自己定义:developer.android.com/reference/android/app/…, int, android.content.Intent, int) 但是关于这个代码的更多细节你应该再次谷歌搜索)
  • 我刚刚阅读了这篇文章......我仍然对声明/定义 ID 变量应该做些什么感到有点迷茫
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-17
  • 1970-01-01
  • 2013-02-07
  • 2014-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多