我遇到了一个问题,就是我的pendingIntent
无法触发。我已经使用logcat等工具进行了一些故障排除,最终我几乎可以确定我的问题实际上在我的pendingIntent
方法中。我设置的时间是正确的,而且该方法被调用了,但是在预定的时间没有任何反应。
这是我用来创建pendingIntent
的方法:
public void scheduleAlarm(){
Log.d("Alarm scheduler","Alarm is being scheduled");
Intent changeVol = new Intent();
changeVol.setClass(this, VolumeService.class);
PendingIntent sender = PendingIntent.getService(this, 0, changeVol, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, time, sender);
//Toast.makeText(this, "Volume Adjusted!", Toast.LENGTH_LONG).show();
}
以下是服务类:
public class VolumeService extends Service{
@Override
public void onCreate() {
super.onCreate();
Log.d("Service", "Service has been called.");
Toast.makeText(getApplicationContext(), "Service Called!", Toast.LENGTH_LONG).show();
}
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
}
scheduleAlarm()
类中的日志记录按照我的计划工作,但是之后什么也没有发生,因此我认为是我的pendingIntent
有问题。提前感谢!
timePicker dialog
提供时间,我已经三次使用 logCat 确认时间选择正确;它是正确的。例如,我今天早些时候检查了它,输入了下午 3:45(MST),当我检查保存的long
值时,它正确地显示为 2013 年 7 月 30 日下午 3:45(MST)。至于你问题的第二部分,我使用以下代码段将其添加到清单中<service android:enabled="true" android:name=".services.VolumeService" />
。 - The Dude