PendingIntent pendingIntent = PendingIntent.getbroadcast( Global.a.getApplicationContext(),(int) cd.e.alarmTime,intent,0); AlarmManager alarmManager = (AlarmManager) Global.a.getSystemService(Activity.ALARM_SERVICE); alarmManager.set(AlarmManager.RTC,cd.e.alarmTime,pendingIntent);解决方法 首先,您需要创建一个broadcastReceiver以在BOOT_COMPLETE上触发
public class BootReceiver extends broadcastReceiver { @OverrIDe public voID onReceive(final Context context,final Intent intent) { if ("androID.intent.action.BOOT_COMPLETED".equals(intent.getAction())) { Intent mServiceIntent = new Intent(); mServiceIntent .setAction("com.crossfire.appname.service.BootService"); Componentname service = context.startService(mServiceIntent); if (null == service) { // something really wrong here Log.e(TAG,"Could not start service "); } } else { Log.e(TAG,"Received unexpected intent " + intent.toString()); } }}
然后创建一个服务以重置所有警报:
public class BootService extends Service { private final String TAG = "BootService"; @OverrIDe public IBinder onBind(final Intent intent) { return null; } @OverrIDe public voID onCreate() { super.onCreate(); Trace.i(TAG,"created"); } @OverrIDe public voID onStart(final Intent intent,final int startID) { super.onStart(intent,startID); Trace.i(TAG,"started"); LoadAlarmsFromDatabase(); } private voID LoadAlarmsFromDatabase() { Cursor c = mDbHelper.getPendingalarms(); if (c.movetoFirst()) { do { int ID = c.getInt(mDbHelper.ID_ColUMN); String time = c.getString(mDbHelper.TIME_ColUMN); addNotification(ID,time); } while (c.movetoNext()); } c.close(); } private voID addNotification(int apptID,String time) { Trace.d(TAG,"addNotification " + apptID + "," + time); Intent intent = new Intent(BootService.this,ApptbroadcastReceiver.class); intent.putExtra("appt_ID",Integer.toString(apptID)); PendingIntent mAlarmSender = PendingIntent.getbroadcast( BootService.this,apptID,0); long alarmTime = System.currentTimeMillis() + 60000; Calendar c = null; try { c = CustomDateUtils.StringToCalendar(time); alarmTime = c.getTimeInMillis(); } catch (ParseException e) { Log.e(TAG,"ParseException"); } AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); am.set(AlarmManager.RTC_WAKEUP,alarmTime,mAlarmSender); }}
最后,将权限和接收者添加到清单中
<uses-permission androID:name="androID.permission.RECEIVE_BOOT_COMPLETED" /> <receiver androID:name=".receiver.BootReceiver" androID:enabled="true"> <intent-filter> <action androID:name ="androID.intent.action.BOOT_COMPLETED"></action> </intent-filter> </receiver>总结
以上是内存溢出为你收集整理的android – AlarmManager在断电时删除所有时间表?全部内容,希望文章能够帮你解决android – AlarmManager在断电时删除所有时间表?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)