Kshitij Vyas
Kshitij Vyas

Reputation: 83

Starting alarm after specified days

Hello Below is my code to Start the alarm in my application.

public static void startReferAlarm(Context context,String[] message,String activityToOpen) 
{
    try {

        Log.d("Refer friend Activity", "Alarm On");
        Calendar calendar = Calendar.getInstance();

        calendar.set(Calendar.HOUR_OF_DAY, 8);
        Intent myIntent = new Intent(context, AlarmReciever.class);
        myIntent.putExtra("message",message);
        myIntent.putExtra("äctivityName",activityToOpen);

        final int _id = (int) System.currentTimeMillis();
        PendingIntent appIntent = PendingIntent.getBroadcast(context, _id, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);

        //48*60*60*1000

        AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);

        alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
                48*60*60*1000, appIntent);

    }catch (Exception e) {
        Log.d("MyActivity", "Alarm Off");
        e.printStackTrace();
    }
}

From my understating above code will start the alarm and will notify on 8 am. and then will repeat after 48 hours.

But I want to start the alarm after 48 hours or lets say after 7 hours and then it repeat after every 48 hours.

Please help me with the logic.Thanks in advance.

Upvotes: 0

Views: 95

Answers (2)

Kshitij Vyas
Kshitij Vyas

Reputation: 83

For any one who is still confuse. Below method will initiate the alarm after 7 days of any particular action it will notify on 9 am and will repeat after 48 hours.

 public static void startCreateProfileAlarm(Context context,AlarmManager alarmManager ,String[] message,String activityToOpen) {

    try {

        //working code
        Calendar calendar = Calendar.getInstance();
        calendar.add(DAY_OF_MONTH,7);
        //calendar.add(Calendar.HOUR_OF_DAY,1);
        calendar.set(Calendar.HOUR_OF_DAY, 9);

        // we can set any time here
        //calendar.set(Calendar.HOUR_OF_DAY, 10);

        Intent myIntent = new Intent(context, AlarmReciever.class);
        myIntent.putExtra("message",message);
        myIntent.putExtra("äctivityName",activityToOpen);


        final int _id = (int) System.currentTimeMillis();

         createProfileAppIntent = PendingIntent.getBroadcast(context, 0, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);


        //48*60*60*1000
        //2*60*1000
        alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
                48*60*60*1000, createProfileAppIntent);


    }catch (Exception e) {
        Log.d("MyActivity", "Alarm Off");
        e.printStackTrace();
    }
}

Upvotes: 1

PEHLAJ
PEHLAJ

Reputation: 10126

Do not use calender.set(Calendar.HOUR, 8) as it will set hours to 8'o clock

Try

//if you want to add 7 hours
calender.add(Calender.HOUR, 7); //this will add 7 hours to current time

//if you want to add 7 days
calender.add(Calender.DAY_OF_MONTH, 7); //this will add 7 days to current time

// interval to repeat alarm after 48hours
int interval = 48 * 60 * 60 * 1000; 

Replace Calendar.HOUR with Calendar.HOUR_OF_THE_DAY if you want to use it in 24hours format.

See the answer for repeating alarm issue How to repeat alarm in android 6.0

Upvotes: 1

Related Questions