Bhanu Sharma
Bhanu Sharma

Reputation: 5145

Alarm not able to stop

I know this is very simple and can do anyone but i m stuck in this plz help where i did mistake

one think very important i start from one.class and stop in second.class and i can do stop after 3rd or 4th day of start.

i start alarm like this

 //set Alarm method
     private void SetAutoCleanningService()
        {           
             long when= System.currentTimeMillis() + 1000*20;
             long repeattime =Constant.NOTIFICATION_TimeDiff;
             if(Constant.IsDebug)
                 System.out.println("time to trigger is ="+getDate(when, "dd/MM/yyyy hh:mm:ss.SSS"));
             Intent intent = new Intent(this, AutoCleaningBroadCast.class);
             intent.setAction("systweak.AutoCleanningBroadCast");
             PendingIntent pendingIntent = PendingIntent.getBroadcast(ApplicationSetting.this,1234567, intent, 0);
             AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
             alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,  when, repeattime,pendingIntent);
         }

And stop like this

//close Alarm method
     private void StopEarlierAlarm() {
        // TODO Auto-generated method stub
         AlarmManager aManager = (AlarmManager) getSystemService(ALARM_SERVICE);         
         Intent intent = new Intent(getBaseContext(), AutoCleaningBroadCast.class);  
         PendingIntent pIntent = PendingIntent.getBroadcast(ApplicationSetting.this, 1234567, intent,0);         
         aManager.cancel(pIntent);
    }

i use same request code but cant able to stop and on every alarm i show one notification that will be repeat in every alarm calling

Upvotes: 0

Views: 51

Answers (3)

Android Dev
Android Dev

Reputation: 433

Check this, it may help you

Step 1:initialize the alarm manager.

AlarmManager alarmManager1;


Step 2:
// for Notification Process
                    Intent myIntent1 = new Intent(Settings.this,MyNotificationService.class);
                    pendingintent2 = PendingIntent.getService(SettingsPage.this, 2, myIntent1, 2);
                    alarmManager1 = (AlarmManager) getSystemService(ALARM_SERVICE);
                    Calendar calendar1Notify = Calendar.getInstance();
                    calendar1Notify.setTimeInMillis(System.currentTimeMillis());
                    calendar1Notify.set(Calendar.HOUR_OF_DAY, 8);
                    calendar1Notify.set(Calendar.MINUTE, 15);

                    alarmManager1.set(AlarmManager.RTC_WAKEUP,calendar1Notify.getTimeInMillis(), pendingintent2);

                    long time24h = 24 * 60 * 60 * 1000;

                    alarmManager1.setInexactRepeating(AlarmManager.RTC_WAKEUP,calendar1Notify.getTimeInMillis(), time24h,pendingintent2);


Step 3-Stop alarm manager:

alarmManager1.cancel(pendingintent2);

Upvotes: 0

Rishabh Singh Bisht
Rishabh Singh Bisht

Reputation: 150

Cancel your PendingIntent too.

pIntent.cancel();

Make sure context used in creating intent is same.

If not possible to use same Context, then create intent as a global Static variable and use later.

Upvotes: 0

Abdullah Babu Kalam
Abdullah Babu Kalam

Reputation: 519

You can cancel the alarm like this:

 Intent intent = new Intent(this, Mote.class);
 PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 1352, intent, 0);
 AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
 alarmManager.cancel(pendingIntent);

Also, you should remove Intent.FILL_IN_DATA from your call to getBroadcast() in the code where you set the alarm.

Upvotes: 1

Related Questions