7

Tôi muốn lặp lại công việc của mình vào mỗi Thứ Hai lúc 09:00 AM & 05:00 PM. Tôi đã sử dụng mã sau cho điều đó nhưng tôi không thể lặp lại nhiệm vụ.Báo thức lặp lại vào mỗi thứ Hai trong Android usig AlarmManager/BroadcastReceiver

Hoạt động Mã: -

public class AndroidScheduledActivity extends Activity { 
    /** Called when the activity is first created. */ 
    int id = 115; 
    Intent myIntent; 
    PendingIntent pendingIntent; 
    AlarmManager alarmManager; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     Button buttonStart = (Button)findViewById(R.id.start); 

     myIntent = new Intent(getBaseContext(), MyScheduledReceiver.class); 
     myIntent.putExtra("id", id); 
     pendingIntent = PendingIntent.getBroadcast(getBaseContext(), id, myIntent, 0); 

     alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 

     buttonStart.setOnClickListener(new Button.OnClickListener(){ 
      public void onClick(View arg0) { 
       // TODO Auto-generated method stub 
       setForMonday(); 
       finish(); 
      }}); 
    } 

    public void setForMonday() { 
     Calendar calendar = Calendar.getInstance(); 


     calendar.set(Calendar.DAY_OF_WEEK,2); 
     calendar.set(Calendar.HOUR,09); 
     calendar.set(Calendar.MINUTE, 00); 
     calendar.set(Calendar.SECOND, 0); 
     calendar.set(Calendar.MILLISECOND, 0); 
     System.out.println("Old is [email protected] :== " + calendar.getTime()); 


     long interval = calendar.getTimeInMillis() + 604800000L; 
     System.out.println("Next Millis = " + interval); 
     alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), interval, pendingIntent); 
    } 
} 

Lưu ý: - Tôi đếm khoảng thời gian dựa trên 86400000 * 7 = 604.800.000;

Receiver: -

public class MyScheduledReceiver extends BroadcastReceiver { 

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

     System.out.println("Receiver"); 
    } 

} 

Nếu ai có bất kỳ ý tưởng xin vui lòng giúp đỡ. Cảm ơn

+0

Chỉ cần thử và kiểm tra thứ hai là ngày 2 hoặc 1 Tôi nghi ngờ về điều đó, khác Thật sự tôi không thấy nhiều bất kỳ vấn đề trong mã của bạn, có thể là trong thử nghiệm của bạn, sau khi cài đặt báo động này thay đổi thiết bị/giờ giả lập của bạn 9AM và Ngày thứ hai tới..và sẽ báo động tôi chắc chắn. – MKJParekh

+0

Tôi gặp sự cố. Của nó trong khoảng thời gian. Thay cho khoảng thời gian tôi đã sử dụng AlarmManager.INTERVAL_DAY * 7 trong phương thức setRepeating. – Scorpion

Trả lời

12

Xóa biến khoảng thời gian và sử dụng các biến sau đây thay cho điều đó.

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY * 7, pendingIntent); 
+0

nếu bạn cần báo thức vào thứ hai hàng tuần để làm thế nào để làm điều đó cho phương thức setRepeating? –

+1

Sau đó, bạn đặt báo thức lặp lại hàng ngày và bật Nhận ngày hiện tại. Nếu ngồi hoặc mặt trời của nó bỏ qua nó. – Vikram

Các vấn đề liên quan