0

我想運行兩個鬧鐘來顯示通知一個是每天一個我每小時在一個相同的接收器類和使用相同的功能,但問題是,當我分配一個另一個得到分配後我重新啓動我的設備,因爲因爲的BOOT_COMPLETED,所以我想知道有什麼辦法可以實現這一目標嗎?如何使用相同的接收機類和相同的功能設置多個鬧鐘?

我alarm_receiver類: -

public class alarmreceiver extends BroadcastReceiver { 
    static int id; 
    @Override 
    public void onReceive(Context context, Intent intent) { 

     Toast.makeText(context, "Alarm running", Toast.LENGTH_SHORT).show(); 

      start(context,id); 

    } 
    static void start(Context context,int id) { 
     if (id==1) { 
       Intent intent = new Intent(context, notification_receiver.class); 
       PendingIntent pendingintent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
       AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
       alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, 
         SystemClock.elapsedRealtime(), 60 * 1000 
         , pendingintent); 

     } else 
      if (id == 2) { 
       Intent intent = new Intent(context, notification_receiver.class); 
       PendingIntent pendingintent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
       AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
       Calendar calendar = Calendar.getInstance(); 
       calendar.set(Calendar.HOUR, 10); 
       calendar.set(Calendar.MINUTE, 14); 
       calendar.set(Calendar.AM_PM, Calendar.PM); 
       alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingintent); 

      } 
    } 
    } 

我打電話,我的主要活動此功能下按鈕單擊事件: -

butn2.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 


       if (r1.isChecked()) { 

        alarmreceiver.start(getApplicationContext(),2); 

        Toast.makeText(getApplicationContext(), "Daily Affirmations Scheduled", Toast.LENGTH_SHORT).show(); 
// 
       } 
       if(r2.isChecked()) 
       { 
        alarmreceiver.start(getApplicationContext(),1); 
        Toast.makeText(getApplicationContext(), "Hourly Affirmations Scheduled", Toast.LENGTH_SHORT).show(); 

       } 

我怎麼能使用相同的報警接收器類實現這個並使用功能?謝謝。

回答

0

你需要使你的PendingIntent獨一無二。目前,您撥打PendingIntent.getBroadcast()的電話將返回相同的PendingIntent

更改此:

PendingIntent pendingintent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

這樣:

PendingIntent pendingintent = PendingIntent.getBroadcast(context, id, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

提供了id參數將使PendingIntent獨特。

相關問題