7

में हर सोमवार को अलार्म दोहराएं मैं हर सोमवार को 09:00 पूर्वाह्न & 05:00 अपराह्न पर अपना काम दोहराना चाहता हूं। मैंने इसके लिए निम्नलिखित कोड का उपयोग किया लेकिन मैं कार्य को दोहराने में सक्षम नहीं हूं।एंड्रॉइड usig AlarmManager/BroadcastReceiver

गतिविधि कोड: -

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

नोट: - मैं 86,400,000 * 7 = 604,800,000 के आधार पर अंतराल गिना;

रिसीवर: -

public class MyScheduledReceiver extends BroadcastReceiver { 

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

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

} 

किसी को भी किसी भी विचार कृपया मदद कृपया है। धन्यवाद

+0

बस कोशिश करते हैं और जाँच सोमवार दिन 2 या 1 मैं उस पर शक है, और वास्तव में मैं अपने कोड में किसी भी समस्या को देखने नहीं है, हो सकता है अपने अपने परीक्षण में, इस अलार्म अपने डिवाइस/एम्युलेटर समय बदलने के सेट करने के बाद 9 बजे और अगले सोमवार की तारीख..और वह अलार्म को आग लगाएगा मुझे यकीन है। – MKJParekh

+0

मुझे समस्या मिली। अंतराल में। अंतराल के स्थान पर मैंने setRepeating विधि में AlarmManager.INTERVAL_DAY * 7 का उपयोग किया। – Scorpion

उत्तर

12

अंतराल चर हटाएं और इसके स्थान पर निम्नलिखित का उपयोग करें।

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

यदि आपको इसे सोमवार को हर सोमवार को अलार्म करने की ज़रूरत है तो इसे सेट रीपेटिंग विधि के लिए कैसे करें? –

+1

फिर आप हर दिन अलार्म दोहराने के लिए सेट करें और वर्तमान दिन चेक प्राप्त करें। अगर यह बैठे या सूरज इसे अनदेखा करते हैं। – Vikram