Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
要自动发送的JavaMail问题_Java_Android_Alarmmanager - Fatal编程技术网

要自动发送的JavaMail问题

要自动发送的JavaMail问题,java,android,alarmmanager,Java,Android,Alarmmanager,我目前正试图让AlarmReceiver在DatePicker/TimePicker触发时发送电子邮件。现在,它已经成功地向移动设备发送推送通知。我还知道SendMail方法在另一个项目中工作 这应该是可行的,但我看不出在调用AlarmReceiver类后触发SendMail方法的代码有任何问题 任何帮助都将不胜感激!谢谢大家! Alarm.java package com.example.pc.achieve; import java.util.Calendar; import andro

我目前正试图让AlarmReceiver在DatePicker/TimePicker触发时发送电子邮件。现在,它已经成功地向移动设备发送推送通知。我还知道SendMail方法在另一个项目中工作

这应该是可行的,但我看不出在调用AlarmReceiver类后触发SendMail方法的代码有任何问题

任何帮助都将不胜感激!谢谢大家!

Alarm.java

package com.example.pc.achieve;

import java.util.Calendar;

import android.content.DialogInterface;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.support.v7.app.AlertDialog;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;

public class Alarm extends Activity{

DatePicker pickerDate;
TimePicker pickerTime;
Button buttonSetAlarm;
TextView info;
private PendingIntent pendingIntent;

final static int RQS_1 = 1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_alarm);

    info = (TextView)findViewById(R.id.info);
    pickerDate = (DatePicker)findViewById(R.id.pickerdate);
    pickerTime = (TimePicker)findViewById(R.id.pickertime);

    Calendar now = Calendar.getInstance();

    pickerDate.init(
            now.get(Calendar.YEAR),
            now.get(Calendar.MONTH),
            now.get(Calendar.DAY_OF_MONTH),
            null);

    pickerTime.setCurrentHour(now.get(Calendar.HOUR_OF_DAY));
    pickerTime.setCurrentMinute(now.get(Calendar.MINUTE));

    buttonSetAlarm = (Button)findViewById(R.id.setalarm);
    buttonSetAlarm.setOnClickListener(new OnClickListener(){

        @Override
        public void onClick(View arg0) {
            Calendar current = Calendar.getInstance();

            Calendar cal = Calendar.getInstance();
            cal.set(pickerDate.getYear(),
                    pickerDate.getMonth(),
                    pickerDate.getDayOfMonth(),
                    pickerTime.getCurrentHour(),
                    pickerTime.getCurrentMinute(),
                    00);

            if(cal.compareTo(current) <= 0){
                //The set Date/Time already passed
                Toast.makeText(getApplicationContext(),
                        "Date/Time Has Already Passed!",
                        Toast.LENGTH_LONG).show();
            }else {
                setAlarm(cal);
            }

        }});

}


private void setAlarm(Calendar targetCal){

    Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
    final int _id = (int) System.currentTimeMillis();
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, _id, intent,PendingIntent.FLAG_ONE_SHOT);
    AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
    alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), pendingIntent);

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage("Your alarm for this deadline has now been set for "  + targetCal.getTime())
            .setCancelable(false)
            .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    finish();
                }
            });
    AlertDialog alert = builder.create();
    alert.show();
}
}
package com.example.pc.reach;
导入java.util.Calendar;
导入android.content.DialogInterface;
导入android.os.Bundle;
导入android.app.Activity;
导入android.app.AlarmManager;
导入android.app.pendingent;
导入android.content.Context;
导入android.content.Intent;
导入android.support.v7.app.AlertDialog;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.widget.Button;
导入android.widget.DatePicker;
导入android.widget.TextView;
导入android.widget.TimePicker;
导入android.widget.Toast;
公共类警报扩展活动{
日期选择器选择器日期;
时间选择器选择时间;
按钮,按钮,扶手;
文本视图信息;
私人吊挂帐篷;
最终静态整数RQS_1=1;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_报警);
info=(TextView)findViewById(R.id.info);
pickerDate=(日期选择器)findViewById(R.id.pickerDate);
pickerTime=(TimePicker)findviewbyd(R.id.pickerTime);
Calendar now=Calendar.getInstance();
pickerDate.init(
现在。获取(日历。年份),
现在。获取(日历。月份),
现在。获取(日历。每月的第天),
无效);
pickerTime.setCurrentHour(now.get(Calendar.HOUR OF_DAY));
setCurrentMinute(now.get(Calendar.MINUTE));
buttonSetAlarm=(按钮)findViewById(R.id.setalarm);
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图arg0){
当前日历=Calendar.getInstance();
Calendar cal=Calendar.getInstance();
校准集(pickerDate.getYear(),
pickerDate.getMonth(),
pickerDate.getDayOfMonth(),
pickerTime.getCurrentHour(),
pickerTime.getCurrentMinute(),
00);

如果(校准比较)到(当前)广播接收器执行可能很快


最好您启动发送电子邮件的意向服务。

谢谢您的回复。因此,此执行可能太快了?我希望在触发警报时自动发送电子邮件,是否不可能以这种方式完成?OnClick可在单独的项目中使用此方法,并立即发送电子邮件。我的意思是inst在使用AsyncTask之前,您可以使用将要运行的Intent服务​ 在后台进程中,但AsyncTask可能不是。啊,我明白了,我还是java新手,不确定如何将此方法更改为使用intent service而不是AsyncTask?谢谢您的帮助!