Created new Java class where trying to implement AlarmManager
class method. I want to create functionality for creating, editing and deleting alarms. Everything has worked fine while all the code was in MainActivity
class.
New class has constructor where context is passed. While application builds successfully, the alarm is not working.
I'm calling setShowDataEvent method at MainActivity:
AlarmController alarmController = new AlarmController(this);
alarmController.setShowDataEvent(startTime, finishTime);
Here is AlarmController class:
private final String TAG = "AlarmController";
Context context;
PendingIntent pendingIntent;
AlarmManager mAlarmManager;
public AlarmController(Context context){
this.context = context;
this.mAlarmManager = (AlarmManager) context.getSystemService(ALARM_SERVICE);
}
public void setShowDataEvent(long startTime, long finishTime){
newAlarmIntentData(startTime);
mAlarmManager.setExact(AlarmManager.RTC, startTime, pendingIntent);
newAlarmIntentData(finishTime);
mAlarmManager.setExact(AlarmManager.RTC, finishTime, pendingIntent);
Log.d(TAG, "setShowDataEvent has been executed");
}
private void newAlarmIntentData(long time){
Intent intent = new Intent(context, AlarmReceiver.class);
intent.putExtra("showData", true);
intent.putExtra("time", time);
pendingIntent = PendingIntent.getBroadcast(context, 1, intent, PendingIntent.FLAG_ONE_SHOT);
}
After moving AlarmManager
to constructor and restarting AndroidStudio
all begin to work. I have added same data to intent, so now there are a two different PendingIntent
's.
intent.setData(Uri.parse("myalarms://" + time));