Robotics
Robotics

Reputation: 129

Android set specific time and at Alarmmanager

I want to set specific time and date in Alarm Manager.I have try to set time in calendar. But after run the application it sends the email properly on specific date but not send specific time whatever i have to set in Alarm Manager.Can someone help me please.Thanks in advance.

Here is my Alarm Manager code

btnSubmit = (Button) findViewById(R.id.buttonSubmit);
     btnSubmit.setOnClickListener(new OnClickListener() {       
        @Override
        public void onClick(View arg0) {
                     cal.setTime(emailDate);
                     cal.set(Calendar.PM, 5);
                     cal.set(Calendar.MINUTE, 5);
                     cal.set(Calendar.SECOND, 0);
                     Date dt = cal.getTime();
                     Long longDate = (long) dt.getTime();
                     System.out.println("dt :=" + dt);
                     System.out.println("Long Date :=" + longDate);
                     Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class);
                     PendingIntent pendingIntent = PendingIntent.getBroadcast(Xyz.this, 1, intent, 0);
                     AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
                     alarmManager.set(AlarmManager.RTC_WAKEUP, longDate, pendingIntent);
           }
}

Here is AlarmManager Code

      strMinusDate = "22-08-2014";
      String[] splitDate_Parts = strMinusDate.split("-");
      saparated_Day = splitDate_Parts[0];
      saparated_Month = splitDate_Parts[1];
      saparated_Year = splitDate_Parts[2];

     int convertDay = Integer.valueOf(saparated_Day);
     int convertMonth = Integer.valueOf(saparated_Month);
     int convertYear =  Integer.valueOf(saparated_Year); 
     cal.set(convertDay,convertMonth,convertYear,11,30,00);
     Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class);
     PendingIntent pendingIntent = PendingIntent.getBroadcast(Xyz.this, 1, intent, 0);
     AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
     alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent);

Here is AlarmManagerBroadcastReceiver class code.

public class AlarmManagerBroadcastReceiver extends BroadcastReceiver 
{
    String strServiceName;
    String strSuppliername;
    String strEmail;
    String strReplacementDate;
    String strIntervalDays;
    String strNextReplacementDate;
    String strEmailDate;

    @Override
    public void onReceive(Context con, Intent arg1)
    {
        // TODO Auto-generated method stub
         SharedPreferences prefs = con.getSharedPreferences("MyPref_Email", Context.MODE_PRIVATE);

         strServiceName=prefs.getString("ServiceName",null);
         strSuppliername=prefs.getString("Suppliername" , null);
         strEmail=prefs.getString("Email" , null);
         strReplacementDate=prefs.getString("ReplacementDate" , null);
         strIntervalDays=prefs.getString("IntervalDays" , null);
         strNextReplacementDate=prefs.getString("NextReplacementDate" ,null);
         strEmailDate = prefs.getString("EmailDate", null);

         System.out.println(strServiceName+" , "+strSuppliername+" , "+strEmail+" , "+strReplacementDate+" , "+strIntervalDays+" , "+strNextReplacementDate);


         Log.e("ON CREATE" , "=" + strServiceName);
         Log.e("ON CREATE" , "=" + strSuppliername);
         Log.e("ON CREATE" , "=" + strEmail);
         Log.e("ON CREATE" , "=" + strReplacementDate);
         Log.e("ON CREATE" , "=" + strIntervalDays);
         Log.e("ON CREATE" , "=" + strNextReplacementDate);
         Log.e("ON CREATE" , "=" + strEmailDate);


         String subject =strServiceName;
         System.out.println(" subject  = " + subject); 


        String body = strServiceName
                      +","
                      +strSuppliername
                      +","
                      +strEmail
                      +","
                      +strReplacementDate
                      +","
                      +strIntervalDays
                      +","
                      +strNextReplacementDate
                      +","
                      +strEmailDate;

                      Log.e("body " , " = " + body);
        System.out.println(" body  = " + body); 


                      Intent shareIntent = new Intent(Intent.ACTION_SEND);
                      shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
                      shareIntent.setType("text/plain");
                      shareIntent.putExtra(Intent.EXTRA_EMAIL  , new String[]{strEmail});
                      shareIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
                      shareIntent.putExtra(Intent.EXTRA_TEXT   , body);
                      Intent new_intent = Intent.createChooser(shareIntent, "Share via");
                      new_intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
                      con.startActivity(new_intent);
                      Log.e("Send Email ="," In My Service  ");
                      System.out.println("Service start time");

    }

}

Upvotes: 1

Views: 1656

Answers (1)

Sagar D
Sagar D

Reputation: 2618

Some ACTION(event) needs to be fired by the sender so that the receiver wakes up in response to that particular event. You are not providing any event in the intent which you are firing

//set the time in this way by giving proper values
    calendar.set(selectedYear, selectedMonth, selectedDay,selectedHour, selectedMinute);

//create the AlarmManager in this way using that calender object
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC,
calendar.getTimeInMillis(), pendingIntent);

EDIT :

When creating intentin your AlarmManager code ,

Intent myIntent = new Intent("com.abc.pqr"); //just a user defined action
PendingIntent pendingIntent = PendingIntent.getBroadcast(Xyz.this, 1, myIntent, 0);

In manifest add :

  <permission android:name="com.abc.pqr"></permission>
    <uses-permission android:name="com.abc.pqr" />

in <application> tag, add

<receiver
    android:name="yourFullPackagePath.AlarmManagerBroadcastReceiver"                     
    android:enabled="true" >
      <intent-filter>
                <action android:name="com.abc.pqr" />
      </intent-filter>
</receiver>

Upvotes: 1

Related Questions