【发布时间】:2013-07-30 23:08:01
【问题描述】:
我无法让我的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。
提前致谢!
【问题讨论】:
-
能否请您提供您如何获得时间价值?你使用系统。 currentTimeMillis() + 一些时间延迟?你在 AndroidManifest.xml 中定义了服务吗?
-
@VladimirLichonos 时间由用户使用
timePicker dialog提供,我使用 logCat 进行了三次检查,以确保时间选择正确;它是。例如,我今天早些时候检查了它并输入了下午 3:45(MST),当我检查long保存的值时,它正确显示为 2013 年 7 月 30 日下午 3:45(MST)。您问题的第二部分,我使用以下 sn-p<service android:enabled="true" android:name=".services.VolumeService" />添加到清单中。 -
嗯,这对我来说似乎很好,但我会尝试通过取消警报并取消并再次创建待定意图来进行更多测试。还尝试仅使用 System.currentTimeMillis() 进行测试。它应该可以工作,并且可能会告诉您问题出在哪里。
标签: android android-intent service alarmmanager android-pendingintent