Reputation: 13
In my application I am using multiple Alarm manger and they all are working fine. Now I need two more things in my app:
Set an ID for each alarmManager so I can identify this alarm in my broadcast receiver
use this id to cancel alarm later
My code for Setting Alarm
Calendar cal1 = Calendar.getInstance();
cal1.set(Calendar.HOUR_OF_DAY, h1);
cal1.set(Calendar.MINUTE, m1+30);
cal1.set(Calendar.SECOND, 00);
Intent intent = new Intent(context, YourBroadCastReceiver.class);
// Add Some unique ID here for e.g "SFSF43535"
PendingIntent openAlarm = PendingIntent.getBroadcast(context, 0, intent, 0);
// Add Some unique ID here for e.g "SFSf87sfs"
PendingIntent CloseAlarm = PendingIntent.getBroadcast(context, 0, intent, 0);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
cal1.getTimeInMillis(), DateUtils.DAY_IN_MILLIS, openAlarm);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
cal1.getTimeInMillis(), DateUtils.DAY_IN_MILLIS, CloseAlarm);
YourBroadCastReceiver (here I need that unique ID)
@Override
public void onReceive(Context context, Intent intent) {
// Get Unique id here to find some data related to that alram
}
Upvotes: 1
Views: 723
Reputation: 1594
Intent intentOpen = new Intent(context, YourBroadCastReceiver.class);
intentOpen.putExtra("id", 1);
PendingIntent openAlarm = PendingIntent.getBroadcast(context, 0, intentOpen, 0);
Intent intentClose = new Intent(context, YourBroadCastReceiver.class);
intentClose.putExtra("id", 2);
PendingIntent CloseAlarm = PendingIntent.getBroadcast(context, 0, intentClose, 0);
and on Received
public void onReceive(Context context, Intent intent) {
int AlarmId = intent.getExtras().getInt("id");
if(AlarmId==1)
{
}else if(AlarmId==2)
{
//Cancle
Intent myIntent = new Intent(context, AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context,
AlarmId, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
pendingIntent.cancel();
manager.cancel(pendingIntent);
}
}
Upvotes: 1
Reputation: 4544
You can add extras to your Intent
which will get passed along:
Intent intent = new Intent(context, YourBroadCastReceiver.class);
intent.putExtra("id", "somerandomID");
And then get the extra back in the receiver:
public void onReceive(Context context, Intent intent) {
String id = intent.getStringExtra("id");
Upvotes: 1