我已设置闹钟以在Android中提醒我它在设备开启时正在工作。但当我关闭设备并再次提醒时,警报无法正常工作。你能告诉我怎样才能解决这个问题?
我的代码看起来像这样,
Intent myIntent = new Intent(getApplicationContext(), serviceclass.class);
PendingIntent pendingIntent = PendingIntent.getService(getApplicationContext(),
CONST+id, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calender = Calendar.getInstance();
calender.setTimeInMillis(System.currentTimeMillis());
calender.set(Calendar.HOUR_OF_DAY, hours);
calender.set(Calendar.MINUTE, ireminder.getMin());
calender.set(Calendar.SECOND, 0);
calender.set(Calendar.MILLISECOND, 0);
calender.set(Calendar.DAY_OF_WEEK, day);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
calender.getTimeInMillis(), 7 * AlarmManager.INTERVAL_DAY, pendingIntent);
答案 0 :(得分:4)
重启时会清除警报。
你能做的是
REBOOT_COMPLETED
- 活动请参阅API:“设备处于睡眠状态时会保留已注册的警报(如果设备在此期间关闭,则可以选择将设备唤醒),但如果设备关闭并重新启动,则会清除设备。” - http://developer.android.com/reference/android/app/AlarmManager.html
答案 1 :(得分:1)
创建一个类OnBootReceiver
public class OnBootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
mgr.setRepeating(AlarmManager.RTC_WAKEUP,
SystemClock.currentThreadTimeMillis(), AlarmManager.INTERVAL_FIFTEEN_MINUTES,
pi);
}
}
内部清单
<receiver android:name=".OnBootReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
在您的活动中
sendBroadcast(new Intent(this, OnBootReceiver.class));