does Alarm Manager persist even after reboot?
AndroidAlarmmanagerAndroid AlarmsAndroid Problem Overview
I am really new to android, I have been researching about alarms. I want to alarm if there is a birthday on that day. I've have used alarm manager. I was confused because i have read that it clears after reboot. I don't have an android phone so I'm just using the emulator.
Here's my code :
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);
}
I made this BroadcastRecever in replace for AlarmSerivce Here :
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);
}
is this enough??
Android Solutions
Solution 1 - Android
A simple answer would be NO. But yes you can achieve this by creating a BroadCastReceiver
which will start the Alarm while booting completes of the device.
Use <action android:name="android.intent.action.BOOT_COMPLETED" />
for trapping boot activity in BroadCastReceiver class.
You need to add above line in AndroidManifest.xml as follows,
<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>
Solution 2 - Android
Yes , you can make AlarmManager to work even after rebooting. Perhaps this is the easiest way : add the below code in your 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>
don't forget to include user-permission to the AndroidManifest.xml as:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
Solution 3 - Android
in some phones only adding
<action android:name="android.intent.action.Boot_COMPLETED" />
does not work you also have to add
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
along with previous one