0

В моем приложении я установил множество уведомлений о тревоге. Все на другой день, но в то же время. И я устанавливаю его вкл/выкл с помощью кнопки переключения.Android: Уведомление о тревоге

Теперь проблема: если я устанавливаю ее, тогда она дает мне уведомление о предыдущем из текущей даты. он появляется только сразу, а затем все уведомления об авариях работают нормально.

Предположим, что если я установил будильник на 12,14,16, тогда я установил дату как 15 на своем устройстве и на кнопке переключения, тогда он дает мне уведомление о 14 в то время. И тогда все идет хорошо.

Так оно логически правильно или есть какие-либо проблемы в моем коде?

Должно ли это быть или нет?

Пожалуйста, смотрите ниже код, который я поставил на оповещение о тревоге:

public void startTwoMonthAlarmNotification() { 

     // ===================== GST ALARM FOR THE TWO MONTHS ========================== 
     // for the GST 20 June 2011 
     AM_2M_GST_1 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE); 
     Intent in1 = new Intent(this, AlarmReceiverNotificationForTwoMonth.class); 
     in1.putExtra("MyMessage","Your 2 Monthly GST return is DUE on 20th June 2011."); 
     PI_2M_GST_1 = PendingIntent.getBroadcast(this, 0, in1, PendingIntent.FLAG_UPDATE_CURRENT); 
     Calendar calendar_GST_18_June_2011 = Calendar.getInstance(); 
     calendar_GST_18_June_2011.setTimeInMillis(System.currentTimeMillis()); 
     calendar_GST_18_June_2011.set(2011, 5, 18, mHour, mMinute, 0); 
     AM_2M_GST_1.set(AlarmManager.RTC_WAKEUP, calendar_GST_18_June_2011.getTimeInMillis(), PI_2M_GST_1); 

     // for the GST 19 August 2011 
     AM_2M_GST_2 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE); 
     Intent in2 = new Intent(this, AlarmReceiverNotificationForTwoMonth.class); 
     in2.putExtra("MyMessage","Your 2 Monthly GST return is DUE on 19th August 2011."); 
     PI_2M_GST_2 = PendingIntent.getBroadcast(this, 1, in2, PendingIntent.FLAG_UPDATE_CURRENT); 
     Calendar calendar_GST_17_August_2011 = Calendar.getInstance(); 
     calendar_GST_17_August_2011.setTimeInMillis(System.currentTimeMillis()); 
     calendar_GST_17_August_2011.set(2011, 7, 17,mHour, mMinute, 0); 
     AM_2M_GST_2.set(AlarmManager.RTC_WAKEUP, calendar_GST_17_August_2011.getTimeInMillis(),PI_2M_GST_2); 

     // for the GST 21 October 2011 
     AM_2M_GST_3 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE); 
     Intent in3 = new Intent(this, AlarmReceiverNotificationForTwoMonth.class); 
     in3.putExtra("MyMessage","Your 2 Monthly GST return is DUE on 21st October 2011."); 
     PI_2M_GST_3 = PendingIntent.getBroadcast(this, 2, in3, PendingIntent.FLAG_UPDATE_CURRENT); 
     Calendar calendar_GST_19_October_2011 = Calendar.getInstance(); 
     calendar_GST_19_October_2011.setTimeInMillis(System.currentTimeMillis()); 
     calendar_GST_19_October_2011.set(2011, 9, 19,mHour, mMinute, 0); 
     AM_2M_GST_3.set(AlarmManager.RTC_WAKEUP, calendar_GST_19_October_2011.getTimeInMillis(),PI_2M_GST_3); 

     // for the GST 17 December 2011 
     AM_2M_GST_4 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE); 
     Intent in4 = new Intent(this, AlarmReceiverNotificationForTwoMonth.class); 
     in4.putExtra("MyMessage","Your 2 Monthly GST return is DUE on 19th December 2011."); 
     PI_2M_GST_4 = PendingIntent.getBroadcast(this, 3, in4, PendingIntent.FLAG_UPDATE_CURRENT); 
     Calendar calendar_GST_17_December_2011 = Calendar.getInstance(); 
     calendar_GST_17_December_2011.setTimeInMillis(System.currentTimeMillis()); 
     calendar_GST_17_December_2011.set(2011, 11, 17,mHour, mMinute, 0); 
     AM_2M_GST_4.set(AlarmManager.RTC_WAKEUP, calendar_GST_17_December_2011.getTimeInMillis(),PI_2M_GST_4); 
     ///////////////////////////////////// 
     // for the GST 26 February 2012 
     AM_2M_GST_5 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE); 
     Intent in5 = new Intent(this, AlarmReceiverNotificationForTwoMonth.class); 
     in5.putExtra("MyMessage","Your 2 Monthly GST return is DUE on 28th February 2012."); 
     PI_2M_GST_5 = PendingIntent.getBroadcast(this, 4, in5, PendingIntent.FLAG_UPDATE_CURRENT); 
     Calendar calendar_GST_26_February_2012 = Calendar.getInstance(); 
     calendar_GST_26_February_2012.setTimeInMillis(System.currentTimeMillis()); 
     calendar_GST_26_February_2012.set(2012, 1, 26,mHour, mMinute, 0); 
     AM_2M_GST_5.set(AlarmManager.RTC_WAKEUP, calendar_GST_26_February_2012.getTimeInMillis(),PI_2M_GST_5); 
     ///////////////////// 
    // for the GST 27 April 2012  
     AM_2M_GST_6 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE); 
     Intent in6 = new Intent(this, AlarmReceiverNotificationForTwoMonth.class); 
     in6.putExtra("MyMessage","Your 2 Monthly GST return is DUE on 29th April 2012."); 
     PI_2M_GST_6 = PendingIntent.getBroadcast(this, 5, in6, PendingIntent.FLAG_UPDATE_CURRENT); 
     Calendar calendar_GST_27_April_2012 = Calendar.getInstance(); 
     calendar_GST_27_April_2012.setTimeInMillis(System.currentTimeMillis()); 
     calendar_GST_27_April_2012.set(2012, 3, 27,mHour, mMinute, 0); 
     AM_2M_GST_6.set(AlarmManager.RTC_WAKEUP, calendar_GST_27_April_2012.getTimeInMillis(),PI_2M_GST_6); 

    // for the GST 16 January 2012 
     AM_2M_GST_7 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE); 
     Intent in7 = new Intent(this, AlarmReceiverNotificationForTwoMonth.class); 
     in7.putExtra("MyMessage","Your 2 Monthly GST return is DUE on 16th January 2012."); 
     PI_2M_GST_7 = PendingIntent.getBroadcast(this, 6, in7, PendingIntent.FLAG_UPDATE_CURRENT); 
     Calendar calendar_GST_16_January_2012 = Calendar.getInstance(); 
     calendar_GST_16_January_2012.setTimeInMillis(System.currentTimeMillis()); 
     calendar_GST_16_January_2012.set(2012, 0, 14,mHour, mMinute, 0); 
     AM_2M_GST_7.set(AlarmManager.RTC_WAKEUP, calendar_GST_16_January_2012.getTimeInMillis(),PI_2M_GST_7); 
     } 

Ниже код для отмены всех аварийного сигнала уведомления о toogleButton выкл:

 AM_2M_GST_1.cancel(PI_2M_GST_1); 
    AM_2M_GST_2.cancel(PI_2M_GST_2); 
    AM_2M_GST_3.cancel(PI_2M_GST_3); 
    AM_2M_GST_4.cancel(PI_2M_GST_4); 
    AM_2M_GST_5.cancel(PI_2M_GST_5); 
    AM_2M_GST_6.cancel(PI_2M_GST_6); 
    AM_2M_PROVISIONAL_1.cancel(PI_2M_PROVISIONAL_1); 
    AM_2M_PROVISIONAL_2.cancel(PI_2M_PROVISIONAL_2); 
    AM_2M_PROVISIONAL_3.cancel(PI_2M_PROVISIONAL_3); 
    AM_2M_TERMINAL_1.cancel(PI_2M_TERMINAL_1); 
+0

Возможно, это проблема индексации. Вы должны опубликовать некоторый код n. – dokkaebi

+0

@dokkaebi: просмотрите обновленный вопрос. Это я использую, чтобы установить будильник. Что в этом плохого ? И есть ли моя логика для этого или нет? –

+0

@dokkaebi: У вас есть идея, как его решить или почему это так? –

ответ

3

Сначала вы должны отмените старый AlarmManager и ожидающее намерение. Здесь вы не отменили свой ожидающий намек. Просто отменить, что использование thic код -

alaramManagerObj.cancel(pendingIntent); 
pendingIntent.cancel(); 

Это будет ясно ненужный Notification и работает только при условии сигнализации. Если вы хотите проверить свой будильник с указанной датой для этой даты, то передается или нет. Просто проверьте с этим -

Calendar c = Calendar.getInstance(); 
c.set(2011, 1, 20); 
long mills = c.getTimeInMillis(); 
long currentTime = System.currentTimeMillis(); 
int x = (mills<=currentTime)?0:1; 

В целочисленной x возвращает 0, если дата не передается, в противном случае возвращает 1. Используйте этот код для ваших нужд.

Надеюсь, это может вам помочь.

+0

O Спасибо. Меня устраивает. –

+1

Спасибо Это также работает для меня ... –

Смежные вопросы