2

내 애플리케이션에서 두 개의 알람을 설정했습니다. toogleButton에 나는 아래의 코드로에 설정 하겠어에 :Android : 여러 알람이 작동하지 않음

case R.id.toggleButtonTwoMonth: 
      myPrefs = this.getSharedPreferences("myPrefs",MODE_WORLD_WRITEABLE); 
      if (tButtonTwoMonth.isChecked()) { 
       Toast.makeText(getApplicationContext(), "Two months reminder is On", Toast.LENGTH_SHORT).show(); 
       prefsEditor = myPrefs.edit(); prefsEditor.putBoolean("TwoMonth", true); prefsEditor.commit(); 

       //For Broadcast Alarm 
       Intent in = new Intent(this, AlarmReceiverNotificationForTwoMonth.class); 

       alarmManagerForTwoMonth1 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE); 
       alarmManagerForTwoMonth2 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE); 

       pendingIntentOfTwoMonth1 = PendingIntent.getBroadcast(this, 0, in, PendingIntent.FLAG_UPDATE_CURRENT); 
       pendingIntentOfTwoMonth2 = PendingIntent.getBroadcast(this, 0, in, PendingIntent.FLAG_UPDATE_CURRENT); 
       // ===================== GST ALARM FOR THE TWO MONTHS ========================== 

       // for the GST 20 June 2011 
       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); 
       alarmManagerForTwoMonth1.set(AlarmManager.RTC_WAKEUP, calendar_GST_18_June_2011.getTimeInMillis(), pendingIntentOfTwoMonth1); 

       // for the GST 17 August 2011 

       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); 
       alarmManagerForTwoMonth2.set(AlarmManager.RTC_WAKEUP, calendar_GST_17_August_2011.getTimeInMillis(),pendingIntentOfTwoMonth2); 


      } 
      else { 
       Toast.makeText(getApplicationContext(), "Two months reminder is Off", Toast.LENGTH_SHORT).show(); 
       prefsEditor = myPrefs.edit(); prefsEditor.putBoolean("TwoMonth", false); prefsEditor.commit(); 

       //alarmManagerForTwoMonth.cancel(pendingIntentOfTwoMonth); 
      } 
      break; 

그러나 토글이 켜져있는 경우, 그 욕망의 시간에 amarm 통지를 받고 있지 않다. 지금은 알람 시간이 지나간 후, 내가 토글을하고 나서 토글을하면 알람이 울립니다.

내 코드가 뭐니? 도와주세요.

편집 : 나는 그것을 처리 도착하는 방법에 대해 궁금 How can I setup multiple alarms in Android?

그러나 : 나는 여러 시간 동안 알람을 설정하기 위해 해결해야 티아 대답

. 나는 다른 메시지를 가진 수신기에 그 경보를 취급하는 방법을 의미 하는가?

//For Broadcast Alarm 
       Intent in = new Intent(this, AlarmReceiverNotificationForTwoMonth.class); 

       // ===================== GST ALARM FOR THE TWO MONTHS ========================== 

       // for the GST 20 June 2011 
       alarmManagerForTwoMonth1 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE); 
       pendingIntentOfTwoMonth1 = PendingIntent.getBroadcast(this, 0, in, 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); 
       alarmManagerForTwoMonth1.set(AlarmManager.RTC_WAKEUP, calendar_GST_18_June_2011.getTimeInMillis(), pendingIntentOfTwoMonth1); 

       // for the GST 17 August 2011 
       alarmManagerForTwoMonth2 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE); 
       pendingIntentOfTwoMonth2 = PendingIntent.getBroadcast(this, 1, in, 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); 
       alarmManagerForTwoMonth2.set(AlarmManager.RTC_WAKEUP, calendar_GST_17_August_2011.getTimeInMillis(),pendingIntentOfTwoMonth2); 

와 수신기에 대한 코드는 다음과 같다 :

다중 알람과 함께 내 업데이트 된 코드는 다음과 같습니다 서로 다른 알람을 처리하는 방법을 이제

public void onReceive(Context context, Intent intent) { 
    // TODO Auto-generated method stub 

    // My Notification Code 
    notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE); 
    int icon = R.drawable.app_icon; 

    CharSequence text = "Your tax amount due period"; 
    CharSequence contentTitle = "Tax Calculator App"; 
    Calendar cal = Calendar.getInstance(); 
    cal.setTimeInMillis(System.currentTimeMillis()); 
    System.out.println("the Date is: "+(cal.getTime().getDate())+" "+ (cal.getTime().getMonth())+" "+ (cal.get(Calendar.YEAR))); 

    if((cal.getTime().getDate()==18) && (cal.getTime().getMonth()==5) && (cal.get(Calendar.YEAR)==2011)){ 
     contentText = "Your GST tax amount is due on 20 June 2011"; 
    } 
    else if((cal.getTime().getDate()==17) && (cal.getTime().getMonth()==7) && (cal.get(Calendar.YEAR)==2011)){ 
     contentText = "Your GST tax amount is due on 19th August, 2011"; 
    } 
    else{ 
     contentText = "Your GST tax amount is due on Falana Dhikna Date"; 
    } 

    long when = System.currentTimeMillis(); 

    intent = new Intent(context, NotificationViewer.class); 
    PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

    notification = new Notification(icon,text,when); 

    long[] vibrate = {0,100,200,300}; 
    notification.vibrate = vibrate; // To vibrate the Device 

    notification.ledARGB = Color.RED; 
    notification.ledOffMS = 300; 
    notification.ledOnMS = 300; 

    notification.defaults |= Notification.DEFAULT_LIGHTS; 
    //notification.flags |= Notification.FLAG_SHOW_LIGHTS; 

    notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); 
    notificationManager.notify(NotificationConstants.NOTIFICATION_ID, notification); 


} 

? 도와주세요. 감사합니다. .

편집

Pleasee이 코드 : 이제

case R.id.toggleButtonTwoMonth: 
      myPrefs = this.getSharedPreferences("myPrefs",MODE_WORLD_WRITEABLE); 
      if (tButtonTwoMonth.isChecked()) { 
       Toast.makeText(getApplicationContext(), "Two months reminder is On", Toast.LENGTH_SHORT).show(); 
       prefsEditor = myPrefs.edit(); prefsEditor.putBoolean("TwoMonth", true); prefsEditor.commit(); 

       //For Broadcast Alarm 
       //Intent in = new Intent(this, AlarmReceiverNotificationForTwoMonth.class); 

       // ===================== 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 GST tax is due on 20 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 GST tax is due on 19 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 19 October 2011 
       AM_2M_GST_3 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE); 
       Intent in3 = new Intent(this, AlarmReceiverNotificationForTwoMonth.class); 
       in3.putExtra("MyMessage","Your GST tax is due on 19 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 GST tax is due on 17 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 20 February 2012 
       AM_2M_GST_5 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE); 
       Intent in5 = new Intent(this, AlarmReceiverNotificationForTwoMonth.class); 
       in5.putExtra("MyMessage","Your GST tax is due on 18 February 2012"); 
       PI_2M_GST_5 = PendingIntent.getBroadcast(this, 4, in5, PendingIntent.FLAG_UPDATE_CURRENT); 
       Calendar calendar_GST_18_February_2012 = Calendar.getInstance(); 
       calendar_GST_18_February_2012.setTimeInMillis(System.currentTimeMillis()); 
       calendar_GST_18_February_2012.set(2012, 1, 18,mHour, mMinute, 0); 
       AM_2M_GST_5.set(AlarmManager.RTC_WAKEUP, calendar_GST_18_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 GST tax is due on 27 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); 

       // ===================== PROVISIONAL ALARM FOR THE TWO MONTHS ========================== 

       // for the PROVISIONAL 26 August 2011 
       AM_2M_PROVISIONAL_1 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE); 
       Intent in7 = new Intent(this, AlarmReceiverNotificationForTwoMonth.class); 
       in7.putExtra("MyMessage","Your PROVISIONAL tax is due on 26 August 2011"); 
       PI_2M_PROVISIONAL_1 = PendingIntent.getBroadcast(this, 6, in7, PendingIntent.FLAG_UPDATE_CURRENT); 
       Calendar calendar_PROVISIONAL_26_August_2011 = Calendar.getInstance(); 
       calendar_PROVISIONAL_26_August_2011.setTimeInMillis(System.currentTimeMillis()); 
       calendar_PROVISIONAL_26_August_2011.set(2011, 7, 26,mHour, mMinute, 0); 
       AM_2M_PROVISIONAL_1.set(AlarmManager.RTC_WAKEUP, calendar_PROVISIONAL_26_August_2011.getTimeInMillis(),PI_2M_PROVISIONAL_1); 

       // for the PROVISIONAL 13 January 2012 
       AM_2M_PROVISIONAL_2 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE); 
       Intent in8 = new Intent(this, AlarmReceiverNotificationForTwoMonth.class); 
       in8.putExtra("MyMessage","Your PROVISIONAL tax is due on 13 January 2012"); 
       PI_2M_PROVISIONAL_2 = PendingIntent.getBroadcast(this, 7, in8, PendingIntent.FLAG_UPDATE_CURRENT); 
       Calendar calendar_PROVISIONAL_13_January_2012 = Calendar.getInstance(); 
       calendar_PROVISIONAL_13_January_2012.setTimeInMillis(System.currentTimeMillis()); 
       calendar_PROVISIONAL_13_January_2012.set(2012, 0, 13,mHour, mMinute, 0); 
       AM_2M_PROVISIONAL_2.set(AlarmManager.RTC_WAKEUP, calendar_PROVISIONAL_13_January_2012.getTimeInMillis(),PI_2M_PROVISIONAL_2); 

       // for the PROVISIONAL 5 May 2012 
       AM_2M_PROVISIONAL_3 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE); 
       Intent in9 = new Intent(this, AlarmReceiverNotificationForTwoMonth.class); 
       in9.putExtra("MyMessage","Your PROVISIONAL tax is due on 5 May 2012"); 
       PI_2M_PROVISIONAL_3 = PendingIntent.getBroadcast(this, 8, in9, PendingIntent.FLAG_UPDATE_CURRENT); 
       Calendar calendar_PROVISIONAL_5_May_2012 = Calendar.getInstance(); 
       calendar_PROVISIONAL_5_May_2012.setTimeInMillis(System.currentTimeMillis()); 
       calendar_PROVISIONAL_5_May_2012.set(2012, 4, 5,mHour, mMinute, 0); 
       AM_2M_PROVISIONAL_3.set(AlarmManager.RTC_WAKEUP, calendar_PROVISIONAL_5_May_2012.getTimeInMillis(),PI_2M_PROVISIONAL_3); 

       // ===================== TERMINAL ALARM FOR THE TWO MONTHS ========================== 

       // for the TERMINAL 5 April 2012  
       AM_2M_TERMINAL_1 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE); 
       Intent in10 = new Intent(this, AlarmReceiverNotificationForTwoMonth.class); 
       in10.putExtra("MyMessage","Your TERMINAL tax is due on 5 APRIL 2012"); 
       PI_2M_TERMINAL_1 = PendingIntent.getBroadcast(this, 9, in10, PendingIntent.FLAG_UPDATE_CURRENT); 
       Calendar calendar_TERMINAL_5_APRIL_2012 = Calendar.getInstance(); 
       calendar_TERMINAL_5_APRIL_2012.setTimeInMillis(System.currentTimeMillis()); 
       calendar_TERMINAL_5_APRIL_2012.set(2012, 3, 5,mHour, mMinute, 0); 
       AM_2M_TERMINAL_1.set(AlarmManager.RTC_WAKEUP, calendar_TERMINAL_5_APRIL_2012.getTimeInMillis(),PI_2M_TERMINAL_1); 

      } 
      else { 
       Toast.makeText(getApplicationContext(), "Two months reminder is Off", Toast.LENGTH_SHORT).show(); 
       prefsEditor = myPrefs.edit(); prefsEditor.putBoolean("TwoMonth", false); prefsEditor.commit(); 

       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); 

       //alarmManagerForTwoMonth.cancel(pendingIntentOfTwoMonth); 
      } 
      break; 

. 여기 나는 알림을 얻었다. 그러나 나는 그것을 모두를 위해 분리 되길 바란다. 이미 존재하는 것이 있으면 새로운 것이 생성되면 이미 존재하는 것을 갱신해서는 안되며 새로운 것을 새로 만들어야 만한다는 것을 의미합니다. 감사합니다. .

+0

루에서 메시지를 검색하지 않는다 알람을 저장하고 브로드 캐스트 리시버를 사용하여 알람 통보를받습니다. –

+0

아니요 데이터베이스를 사용하고 있지 않습니다. . . 왜 ? 내가해야만하니? –

+0

내 업데이트 된 질문을 참조하십시오. –

답변

4

좋아, 왜

Intent in = new Intent(this, AlarmReceiverNotificationForTwoMonth.class); 
in.putExtra("MyMessage","Your tax is due on blah blah blah"); 
pendingIntentOfTwoMonth1 = PendingIntent.getBroadcast(this, 0, in, PendingIntent.FLAG_UPDATE_CURRENT); 

그리고 onRecieve

이 단순히 sqlite가 데이터베이스 (내부 데이터베이스)를 사용하여 의도

public void onReceive(Context context, Intent intent) { 

// blah blah 
    Toast.show(context,intent.getStringExtra("MyMessage"),Toast.LENGTH_LONG).show(); 
+0

좋아, 그럼 내가 원하는대로 내가 내 코드에 대한 그것을 사용하는 경우 사용할 수 있습니까? –

+0

예, 알람을 설정할 때 이벤트에 대한 데이터를 저장하기위한 의도 사용 ... 방송 수신자에서 알람을 설정하는 동안 만든 인 텐트 (onRecieve의 두 번째 매개 변수)에서 데이터를 검색하기 만하면됩니다 – st0le

+0

변수가 해결되지 않은 인 텐트에서 syntext 오류가 발생했습니다. –

1

Plz 데이터베이스를 사용하는 다음 링크에서 내 대답을 시험해보십시오.

AlarmManager with Broadcast Receiver

먼저 데이터베이스에서 데이터를 얻기 위해 다음 방송 수신기 클래스를 만들 활동 &에서 데이터베이스에 알람 시간과 날짜를 추가합니다.

+0

그래서 하루를 선택하기 위해 다중 알람을 만들고 싶다면 선택한 날짜를 사용하기 위해 데이터베이스를 사용해야합니다. –

+0

하지만 내가 선택한 날짜와 시간으로 단일 Alatm을 사용한다면 다른 날짜가 작동하지 않는 이유는 무엇입니까? –

+0

Inbuilt 알람에서만 위의 링크에서 나를 위해 일하는 여러 알람에 대해 데이터베이스를 사용하면 단일 알람이 작동합니다. –

관련 문제