Android编程实现定时发短信功能示例
本文实例讲述了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程序设计有所帮助。