欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android编程实现定时发短信功能示例

程序员文章站 2023-12-20 08:48:22
本文实例讲述了android编程实现定时发短信功能。分享给大家供大家参考,具体如下: 第一,要实现发短信的功能,必须要用到android系统中发短信的权限,即在andor...

本文实例讲述了android编程实现定时发短信功能。分享给大家供大家参考,具体如下:

第一,要实现发短信的功能,必须要用到android系统中发短信的权限,即在andoridmanifest.xml中添加如下内容

<uses-permissionandroid:name="android.permission.send_sms"/>

第二,使用alarmmanager来实现一个倒计时的功能,当时间到时发送短   信。alarmmanager有两个相似的用法:

1.在指定时常时候执行某项操作。
2.周期性的执行某项操作。alarmmanager对象需要配合intent对象使用,可以定时开启一个activity,发送一个broadcast,或者开启一个service。

以下是核心代码片段:

alarmmanager amanager=(alarmmanager)getsystemservice(context.alarm_service);
intent intent=new intent(this,alarmreceiver.class);
intent.setaction("alarmreceiver");
pendingintent pendingintent=pendingintent.getbroadcast(this, 0, intent, 0);
//amanager.set(alarmmanager.rtc, calendar.gettimeinmillis(), pendingintent);
amanager.setrepeating(alarmmanager.rtc, 0, 60*1000, pendingintent)

第三,实现时间的设定方式。

1.可以直接使用alarmmanager对象的set方法来设定具体的闹钟时间。
2.可以使用timepicker的方式来设定时间,这种方式比较灵活。

第四,新建一个alarmreceiver类,来对闹钟进行响应。

1. 现在androidmainfest.xml里添加receiver的声明

<receiver
android:name=".alarmreceiver"
  android:label="@string/app_name">
  <intent-filter>
    <action android:name="alarmreceiver" />
  </intent-filter>
</receiver>

在alarmreceiver.java中实现对时间的获取以及发送短信的功能。发送短信需要用到smsmanager类,利用类 smsmanager 发送信息, smsmanager 为 smsmanager 一个默认的实例.

smsmanager smsmanager =smsmanager.getdefault();

它的方法如下

smsmanager.sendtextmessage(destinationaddress,scaddress, text, sentintent, deliveryintent)

其中各个参数的含义如下

destinationaddress: 收件人号码
scaddress: 短信中心服务号码, 这里设置为null
text: 发送内容
sentintent: 发送短信结果状态信号(是否成功发送),new 一个intent , 操作系统接收到信号后将广播这个intent.此过程为异步.
deliveryintent: 对方接收状态信号(是否已成功接收).

最后附上详细的代码

public class youlainaozhongactivity extends activity {
  textview onetextview;
  textview twotextview;
  textview threetextview;
  button onebutton;
  button twobutton;
  dialog dialog = null;
  //新建日历对象,用来设置闹钟时间
  calendar calendar = calendar.getinstance();
  private sharedpreferences sharedpreferences;
  public void oncreate(bundle savedinstancestate) {
    super.oncreate(savedinstancestate);
    setcontentview(r.layout.main);
    calendar.settimeinmillis(system.currenttimemillis());
    linearlayout relativelayout =(linearlayout) findviewbyid(r.id.linearlayout);
      relativelayout.setbackgroundresource(r.drawable.bejing);
    onebutton=(button) findviewbyid(r.id.onebutton);
    onebutton.setonclicklistener(new onclicklistener() {
      @override
      public void onclick(view v) {
        dialog();
      }
    });
    twobutton=(button) findviewbyid(r.id.twobutton);
    twobutton.setonclicklistener(new onclicklistener() {
      @override
      public void onclick(view v) {
        finish();
      }
    });
    onetextview=(textview) findviewbyid(r.id.onetextview);
    twotextview=(textview) findviewbyid(r.id.twotextview);
    threetextview=(textview) findviewbyid(r.id.threetextview);
    sharedpreferences=getsharedpreferences("alarm_record", activity.mode_private);
    alarmmanager amanager=(alarmmanager)getsystemservice(context.alarm_service);
    intent intent=new intent(this,alarmreceiver.class);
    intent.setaction("alarmreceiver");
    pendingintent pendingintent=pendingintent.getbroadcast(this, 0, intent, 0);
//   amanager.set(alarmmanager.rtc, calendar.gettimeinmillis(), pendingintent);
    amanager.setrepeating(alarmmanager.rtc, 0, 60*1000, pendingintent);
  }
  public void dialog(){
    view view=getlayoutinflater().inflate(r.layout.shijian, null);//
    final timepicker timepicker=(timepicker)view.findviewbyid(r.id.timepicker);
    final edittext oneeditext=(edittext)view.findviewbyid(r.id.oneeditext);
    final edittext twoeditext=(edittext)view.findviewbyid(r.id.twoeditext);
    timepicker.setis24hourview(true);
    new alertdialog.builder(this)
    .settitle("设置")
    .setview(view)
    .setpositivebutton("确定", new dialoginterface.onclicklistener() {
    public void onclick(dialoginterface dialog, int which) {
    string timestr=string.valueof(timepicker.getcurrenthour())+":"+string.valueof(timepicker.getcurrentminute());
    /*calendar.set(calendar.hour_of_day,timepicker.getcurrenthour());
    calendar.set(calendar.minute, 55);*/
    onetextview.settext("您设置的时间为: "+timestr);
    twotextview.settext("您设置的号码为: "+oneeditext.gettext().tostring());
    threetextview.settext("您设置的内容为: "+twoeditext.gettext().tostring());
    sharedpreferences.edit().putstring(timestr, timestr).commit();
    sharedpreferences.edit().putstring("haoma", oneeditext.gettext().tostring()).commit();
    sharedpreferences.edit().putstring("neirong", twoeditext.gettext().tostring()).commit();
    }
    }).setnegativebutton("取消", null).show();
  }
}
public class alarmreceiver extends broadcastreceiver {
  /**
   * 通过广播进行扫描,是否到达时间后再响起闹铃
   * */
  @override
  public void onreceive(context context, intent intent) {
    sharedpreferences sharedpreferences = context.getsharedpreferences(
        "alarm_record", activity.mode_private);
    string hour = string.valueof(calendar.getinstance().get(
        calendar.hour_of_day));
    string minute = string.valueof(calendar.getinstance().get(
        calendar.minute));
    string time = sharedpreferences.getstring(hour + ":" + minute, null);// 小时与分,
    string haoma = sharedpreferences.getstring("haoma", null);
    string neirong = sharedpreferences.getstring("neirong", null);
    if (time != null) {// 判断是否为空,然后通过创建,
//     mediaplayer mediaplayer = mediaplayer.create(context, r.raw.a);
      toast.maketext(context, "短信已经发送成功", toast.length_long).show();
//     mediaplayer.start();// 开始 ;
      sendmsg(haoma, neirong);
    }
  }
  private void sendmsg(string number, string message) {
    smsmanager smsmanager = smsmanager.getdefault();
    smsmanager.sendtextmessage(number, null, message, null, null);
  }
}

更多关于android相关内容感兴趣的读者可查看本站专题:《android短信与电话操作技巧汇总》、《android文件操作技巧汇总》、《android操作json格式数据技巧总结》、《android编程之activity操作技巧总结》、《android开发入门与进阶教程》、《android资源操作技巧汇总》、《android视图view技巧总结》及《android控件用法总结

希望本文所述对大家android程序设计有所帮助。

上一篇:

下一篇: