即使重新启动后,“警报pipe理器”仍然存在

我真的很陌生,我一直在研究闹钟。 如果当天有生日,我要报警。 我已经使用了警报pipe理器。 我很困惑,因为我已经读过它重新启动后清除。 我没有一个Android手机,所以我只是使用模拟器。

这是我的代码:

public void schedAlarm() { AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); Intent intent = new Intent(this, AlarmService.class); pendingIntent = PendingIntent.getBroadcast(this, contact.id, intent, PendingIntent.FLAG_ONE_SHOT); am.setRepeating(AlarmManager.RTC, timetoAlarm, nextalarm, pendingIntent); } 

我做了这个BroadcastReceverreplaceAlarmSerivce在这里:

 public void onReceive(Context context, Intent intent) { nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); CharSequence from = "It Birthday!"; CharSequence message =" Greet your friend."; PendingIntent contentIntent = PendingIntent.getActivity(context, 0, new Intent(), 0); Notification notif = new Notification(R.drawable.ic_launcher, "Birthday", System.currentTimeMillis()); notif.setLatestEventInfo(context, from, message, contentIntent); nm.notify(1, notif); } 

这够了吗??

一个简单的答案是没有 。 但是,你可以通过创build一个BroadCastReceiver来实现这个function,它将在引导完成时启动Alarm。

使用<action android:name="android.intent.action.BOOT_COMPLETED" />来捕获BroadCastReceiver类中的启动活动。

您需要如下在AndroidManifest.xml中添加上面的行,

 <receiver android:name=".AutoStartUp" android:enabled="true" android:exported="false" android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> 

是的,即使重新启动,您也可以使AlarmManager工作。 也许这是最简单的方法:在你的AndroidManifest.xml中添加下面的代码:

 <receiver android:name=".AlarmReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.intent.action.QUICKBOOT_POWERON" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> 

不要忘记将AndroidManifest.xml的用户权限包含为:

 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 

在一些手机只join

 <action android:name="android.intent.action.Boot_COMPLETED" /> 

不工作,你也必须添加

 <action android:name="android.intent.action.QUICKBOOT_POWERON" /> 

与以前一样