java - 将应用程序设置为在到达时间时发送 SMS MESSAGE

标签 java android sms alarmmanager smsmanager

用户设置日期和时间(均为 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 中吗?如何?请提供任何帮助!

最佳答案

  1. 创建报警接收器 需要的权限:

    公共(public)类 AlarmReceiver 扩展 BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
      //send sms from here
    }
    

  2. 设置闹钟

    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 中,从数据库中获取计划时间<= 当前时间的所有消息。 您可能需要的另一件事是处理手机在警报时关闭的情况,在这种情况下,在启动完成时启动服务并发送所有待处理的消息。

报警示例引用:https://github.com/AppLozic/Applozic-Android-SDK/blob/master/mobicomkit/src/main/java/com/applozic/mobicomkit/api/conversation/schedule/ScheduledMessageUtil.java

关于java - 将应用程序设置为在到达时间时发送 SMS MESSAGE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32928284/

相关文章:

java - android - 在带有滚动的可扩展 ListView 中加载json

android - 这可以在android中发送短信时隐藏/更改发件人手机号码吗?

android - 在android中自动在后台发送短信

java - 哪种方法更快 ob.setText (""+int) 或 ob.setText(String.valueOf(int);

java - Android - 解析数据 org.json.jsonException 在字符 0 处输入结束时出错

android - 我可以使用什么来代替 android 中的上下文菜单?

Android - 发送短信并使文本不可编辑

java - LWJGL键盘输入没有调用在显示器上绘图的方法?

java - 很难理解Android C2DM

java - 使用不同版本的 JDK 和相同的目标和源版本编译 Java 是否保证相同的执行?