Java 如何为选定的日期和时间设置报警?

Java 如何为选定的日期和时间设置报警?,java,android,Java,Android,我有以下代码,可以从中同时设置日期选择器和时间选择器的时间和日期: private void dialoguetime() { final Dialog dialog = new Dialog(this); dialog.setContentView(R.layout.custom_dialogue); dialog.setCancelable(true); dialog.setTitle("This is Dialog 1"); dialog.sho

我有以下代码,可以从中同时设置日期选择器和时间选择器的时间和日期:

 private void dialoguetime() {

    final Dialog dialog = new Dialog(this);
    dialog.setContentView(R.layout.custom_dialogue);
    dialog.setCancelable(true);
    dialog.setTitle("This is Dialog 1");
    dialog.show();

    TimePicker time_picker = (TimePicker) dialog
            .findViewById(R.id.timePicker1);
    hours = time_picker.getCurrentHour();
    minute = time_picker.getCurrentMinute();
    time_picker.setOnTimeChangedListener(new OnTimeChangedListener() {
        public void onTimeChanged(TimePicker view, int hourOfDay,
                int minutes) {
            // TODO Auto-generated method stub
            // Toast.makeText(CustomDialog.this,
            // "hourOfDay = "+hourOfDay+"minute = "+minute , 1000).show();
            hours = hourOfDay;
            minute = minutes;
        }
    });

    final DatePicker date_picker = (DatePicker) dialog
            .findViewById(R.id.datePicker1);
    Button btn = (Button) dialog.findViewById(R.id.button2);
    btn.setOnClickListener(new OnClickListener() {

        public void onClick(View arg0) {
            // TODO Auto-generated method stub



            xDate = date_picker.getYear() + "-"+ (date_picker.getMonth() + 1) + "-"+ date_picker.getDayOfMonth() + " " + hours+ ":" + minute + ":00";
            Toast.makeText(
                    getApplicationContext(),
                    xDate, Toast.LENGTH_LONG)
                    .show();
            dialog.cancel();
        }

    }

    );

}
从中,我可以得到一个字符串作为日期格式,如下所示
yyyy-mm-dd hh:mm:ss
,现在我想向用户发出所选时间的警报(作为警报)。我已经为此使用了报警管理器,但它不允许我选择那个日期


我如何才能做到这一点?

如果您查看AlarmManager的API(http://developer.android.com/reference/android/app/AlarmManager.html)你可以看到这个方法

set()
需要以下参数:

public void set (int type, long triggerAtMillis, PendingIntent operation)
在哪里

int type = One of ELAPSED_REALTIME, ELAPSED_REALTIME_WAKEUP, RTC or RTC_WAKEUP.
long triggerAtMillis = time in milliseconds that the alarm should go off, using the appropriate clock (depending on the alarm type).
PendingIntent operation = Action to perform when the alarm goes off
因此,基本上您应该做的是获取所选日期(DateFormat.parse()解析日期格式化字符串到日期)和当前日期之间的时间。大概是这样的:

Date now = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
Date parsedDate = format.parse(YOUR_PICKED_DATE_AS_STRING);
long alertTime = parsedDate.getTime() - now.getTime();

Intent someIntent = new Intent(getApplicationContext(), YourClass.class);
PendingIntent pending = PendingIntent.getBroadcast(getApplicationContext(), 0, someIntent, 0);

AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
manager.set(AlarmManager.

请发布您的报警管理器代码。我是alerm manager的初学者,我使用的报警管理器在另一个项目中,每15分钟发送一条短信,但我知道这在这里不起作用