This is my first question on SO. I am making an android app where it will count automatic days when to wake up alarm by giving birthdate. And I have one comman alarm time for every scheduled date.
c8.add(Calendar.MONTH, 18);
sdf = new SimpleDateFormat("yyyy-dd-MM");
//String output = sdf.format(c.getTime());
Date eighteendtmonth= new Date(c8.getTimeInMillis());
dteighteenmonth = sdf.format(eighteendtmonth);
System.out.println("Eighteen Month date is--->"+dteighteenmonth);
c8.set(Calendar.HOUR_OF_DAY, bhour);
c8.set(Calendar.MINUTE, bminute);
try {
Date date1 = df.parse(dteighteenmonth); //birthdate
Date date2 = df.parse(currentdate); //
if(date1.equals(date2) || date1.after(date2))
{
setAlarm(c8, eighteenmonth, dteighteenmonth, alarmtime, name );
}
} catch (ParseException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
private void setAlarm(Calendar targetCal, String detail, String vdate, String vtime, String childname){
alarmid =(int) System.currentTimeMillis();
System.out.println("vdate is--->"+vdate);
System.out.println("alarm time is--->"+vtime);
System.out.println("Alarm is set----->");
Intent intent = new Intent(getApplicationContext(), AlarmReceiver.class);
intent.setAction("android.intent.action.MAIN");
intent.putExtra("detail", detail);
intent.putExtra("childname", name);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), alarmid, intent, PendingIntent.FLAG_ONE_SHOT);
AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), pendingIntent);
}
Broadcastreceiver...
public void onReceive(Context context, Intent intent) {
Intent pushIntent = new Intent(context, Childlist.class);
pushIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startService(pushIntent);
Toast.makeText(context, detail , Toast.LENGTH_LONG).show();
AndroidManifest.xml
<uses-permission android:name='android.permission.WAKE_LOCK'/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<receiver
android:name=".AlarmReceiver"
android:enabled="true"
android:exported="true"
android:label="AlarmReceiver">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<receiver android:name=".AlarmReceiver" android:process=":remote" />
So My question is that My scheduler working perfectly. But after reboot device not a single alarm working. Help meee:))
For this we need a Broadcast receiver that should receive "BOOT_COMPLETED" broadcast. We must know that when a device finishes booting Android System sends "BOOT_COMPLTED" broadcast.
Registering the BootReciever in android manifest file
<receiver android:name=".BootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
</receiver>
and do not forget to add the following permission in manifest .
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
this permission is required to listen/reverie the BOOT_COMPLETED action
BootReceiver.java
public class BootReceiver extends BroadcastReceiver
{
public void onReceive(Context context, Intent intent)
{
// Your code to execute when Boot Completd
**Schedule your Alarm Here**
Toast.makeText(context, "Booting Completed", Toast.LENGTH_LONG).show();
}
}
The onRecieve() method of BootReceiver will execute when boot completes, so wee need to write the code inside onreceive() method
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With