2

私のアプリケーションで私は2つのアラームを設定しました。 toogleButtonオン iは、以下のコードでそれをオンに設定するつもりだ上: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通知を取得しておりません。 アラームの時間が経過した後、私がオフにしてからオンにするとアラームが表示されます。

私のコードで何が間違っていますか? 私を助けてください。

EDITED:私は、複数の時間のためのアラームを設定するために解決していチア答えを

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

RUからのメッセージを取得していませんアラームを保存し、放送受信機を使用してアラーム通知を取得します。 –

+0

いいえデータベースを使用していません。 。 。どうして ?私はそれをしなければならないのですか? –

+0

更新された質問をご覧ください。 –

答えて

4

[OK]を、なぜあなたはこの

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

はい、アラームを設定するときに、目的を使用してイベントに関するデータを保存します。ブロードキャストレシーバでは、Intent(第2パラメータonRecieve)からデータを取得するだけで、アラームの設定時に作成したものと同じです – st0le

+0

変数が解決されていないという意図でシンセエラーが発生しました –

1

Plzデータベースを使用した次のリンクから私の答えを試してください。

AlarmManager with Broadcast Receiver

まず、データベースからデータを取得するために、次に放送受信機のクラスを作成し、あなたの活動&からデータベースにアラーム時刻と日付を追加します。

+0

だから私は、複数のアラームを1日選択するためにしたい場合は、その選択された日付を使用するためにデータベースを使用する必要がありますか? –

+0

しかし、選択した日付と時刻のSingle Alatmを使用すると、他の日付の作品は動作しないのですか? –

+0

Inbuiltアラームのみ上記のリンクから私のために働いている複数のアラームのためにデータベースを使用すると、単一のアラームが動作します。 –

関連する問題