Search code examples
androidalarmmanager

why does Just the last alarm sat have been worked


i have a project that use alarmmanager. many avtivity set alarms and then when alarm have been rise,specific activity in name of AlarmSetter that started show alarm and also set a new (next) alarm and snooz alarm(if user needs). my problem is just the last alarm setted . this mean all activity set alarm byut the last alarm set has worked .for example in alarm setter if user select snooz button then main alarm dont work(just snooz work as well = the last alarm sat). i set alarmmanager in G class(common) and use and set alarm in activity alarm.java

This is My G Class :

public class G extends Application {
 public static AlarmManager          alarmManager;
@Override
public void onCreate() {
    super.onCreate();
    context = getApplicationContext();
    inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
}
}

Alarm Setter Java IS :

public class ActivityAlarm extends ActivityMain {
@Override
public void onCreate(Bundle savedInstanceState) {
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.alarmshower);

   //at first reminder will start, should register next alarm time :
    long MilisectoAlarmManager = mDbHelper.SetNextTime_andIsactiveYET(DrugRegID);
    if (MilisectoAlarmManager != 0 && IsFor10minlater == 0) {
        Intent intentMain = new Intent(G.context, ActivityAlarm.class);
        intentMain.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intentMain.putExtra("DrugID", String.valueOf(DrugRegID));
        intentMain.putExtra("IsItFor10MinLate", String.valueOf(0));
        PendingIntent pendingIntentMain = PendingIntent.getActivity(G.context, 0,    intentMain, PendingIntent.FLAG_UPDATE_CURRENT);
        String AA = mDbHelper.GetStartDateAlarm(DrugRegID);
        Date D = new Date(MilisectoAlarmManager);
        System.out.println("current Date(ms): " + MilisectoAlarmManager);
        G.alarmManager.set(AlarmManager.RTC_WAKEUP, MilisectoAlarmManager,   pendingIntentMain);
    }



//Finished Activing Alarm Manager and switch Off Alarmn
    else if (MilisectoAlarmManager == 0 && IsFor10minlater == 0) {
        mDbHelper.UpdateAlarmSwitch(DrugRegID, false);
    }

    handler.postDelayed(r, HowLongRemainAlarm_var);
    //End CountDown Finished Activity 

    //Procedure for 10 min later button 
    btn10minLater_var.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            btn10minLater_var.setBackgroundColor(Color.parseColor("#1174b9"));
            Intent intentFor10min = new Intent(G.context, ActivityAlarm.class);
            intentFor10min.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intentFor10min.putExtra("DrugID", String.valueOf(DrugRegID));
            intentFor10min.putExtra("IsItFor10MinLate", String.valueOf(1));
            PendingIntent pendingIntent10min = PendingIntent.getActivity(G.context, 0,  intentFor10min, PendingIntent.FLAG_UPDATE_CURRENT);

            G.alarmManager.set(AlarmManager.RTC_WAKEUP, new Date().getTime() + 20000,  pendingIntent10min);



            ActivityAlarm.this.finish();
        }
    });

Solution

  • i found asnwer ! in PendingIntent.getActivity secound parameter must have diffrent in each alarm set !