Java Android在Alarmmanager上设置特定的时间和时间

Java Android在Alarmmanager上设置特定的时间和时间,java,android,alarmmanager,Java,Android,Alarmmanager,我想在报警管理器中设置特定的时间和日期。我已尝试在日历中设置时间。但在运行应用程序后,它会在特定日期正确发送电子邮件,但不会发送我必须在Alarm Manager中设置的特定时间。请有人帮助我。提前谢谢 这是我的报警管理器代码 btnSubmit = (Button) findViewById(R.id.buttonSubmit); btnSubmit.setOnClickListener(new OnClickListener() { @Override

我想在报警管理器中设置特定的时间和日期。我已尝试在日历中设置时间。但在运行应用程序后,它会在特定日期正确发送电子邮件,但不会发送我必须在Alarm Manager中设置的特定时间。请有人帮助我。提前谢谢

这是我的报警管理器代码

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);
           }
}
下面是AlarmManager代码

      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);
下面是AlarmManagerBroadcastReceiver类代码

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

    }

}
一些动作(事件)需要由发送方触发,以便
接收方在响应特定事件时醒来。您没有在您正在触发的
意图中提供任何事件

//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);
编辑:

AlarmManager
代码中创建
intent

Intent myIntent = new Intent("com.abc.pqr"); //just a user defined action
PendingIntent pendingIntent = PendingIntent.getBroadcast(Xyz.this, 1, myIntent, 0);
在清单中添加:

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

标记中,添加

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


-电子邮件已发送,但收件箱中未显示原因。无论您对我说什么,我都必须更改代码。这样=校准集(convertDay,convertMonth,convertYear,18,01,0);报警管理器工作正常。您的代码@Sam Dunk还有一些其他问题:我的意思是为什么不在06:01 pm向我发送报警通知粘贴AlarmManagerBroadCastreceRiver的代码在这里我在谈论文件AlarmManagerBroadCastreceRiver.java中的代码发生了什么事,愚蠢的人不加评论地否决了好问题。@Siddharth:你想说什么?有人不加评论地否决了你的问题。我刚刚投了更高的票。@Siddharth:-谢谢,太多了。@Robotics研究了更多关于android接收器的信息,你遗漏了一些基本点,这表明你对它们了解不够。