用户设置日期和时间(均为 editText),当准确时间到达时,应用程序提取时间和日期并将其与当前时间进行比较,然后,它应该发送文本,但是当时间到了,什么也没有发生。 这是我的代码 fragment :
Calendar today=Calendar.getInstance();
Calendar alarmdate=Calendar.getInstance();
SimpleDateFormat dateFormatter;
String a,b;
Date duedate;
dateFormatter = new SimpleDateFormat("dd-MM-yyyy", Locale.US);
String hour= String.valueOf(today.get(Calendar.HOUR_OF_DAY));
String minute= String.valueOf(today.get(Calendar.MINUTE));
String todaytime=hour+ " : " + minute;
String alarmtime=tvtime.getText().toString();
try {
duedate=dateFormatter.parse(tvdate.getText().toString());
} catch (ParseException e) {
e.printStackTrace();
}
alarmdate.setTime(duedate);
a=dateFormatter.format(today.getTime());
b=dateFormatter.format(alarmdate.getTime());
if(today.equals(alarmdate)){
if (todaytime.equals(alarmtime)){
sendSMS(numbertotext,message);
}
}
}
private void sendSMS(String number, String message) {
PendingIntent pi=PendingIntent.getActivity(this,0,new Intent(),0);
SmsManager sms=SmsManager.getDefault();
sms.sendTextMessage(number,null,message,pi,null);
}
我正在考虑使用 alarmmanager,但它如何工作? SMS 代码会在 Alarm.java 中吗?如何?请提供任何帮助!
最佳答案
创建报警接收器 需要的权限:
公共(public)类 AlarmReceiver 扩展 BroadcastReceiver {
@Override public void onReceive(Context context, Intent intent) { //send sms from here }
设置闹钟
AlarmManager报警; PendingIntent Intent ; Intent otherIntent = new Intent(); otherIntent.setClass(this, AlarmReceiver.class); alarm = (AlarmManager) ctx.getSystemService(Context.ALARM_SERVICE); Intent = PendingIntent.getService(这个, (int) System.currentTimeMillis(), otherIntent, PendingIntent.FLAG_UPDATE_CURRENT); alarm.set(AlarmManager.RTC_WAKEUP, SCHEDULED_TIME, intent);
将所有计划的消息存储在数据库中,并从AlarmReceiver 中,从数据库中获取计划时间<= 当前时间的所有消息。 您可能需要的另一件事是处理手机在警报时关闭的情况,在这种情况下,在启动完成时启动服务并发送所有待处理的消息。
关于java - 将应用程序设置为在到达时间时发送 SMS MESSAGE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32928284/