定时发送短信之AlarmManage,SmsManger的使用
来源:互联网 发布:手机吓人软件大全 编辑:程序博客网 时间:2024/05/16 02:39
学习定时发送短息,结果了看了好几个帖子,都介绍的好简单,自己照着弄了下,总是不成功,后来终于找到原因了。还是AlarmManage的使用有问题。。
首先获取一个闹铃管理对象
AlarmManager alarm=(AlarmManager) getSystemService(ALARM_SERVICE);
之后介绍他的方法
❑ void set(int type, long triggerAtTime, PendingIntent operation)
设置一个闹钟
❑ void setRepeating(int type, long triggerAtTime, long interval, PendingIntent operation)
设置一个会重复的闹钟
❑ void setInexactRepeating(int type, long triggerAtTime, long interval, PendingIntent operation)
设置一个重复闹钟的不精确版本,它相对而言更节能(power-efficient)一些,因为系统可能会将几个差不多的闹钟合并为一个来执行,减少设备的唤醒次数。
内置的几个interval为:
INTERVAL_FIFTEEN_MINUTES
INTERVAL_HALF_HOUR
INTERVAL_HOUR
INTERVAL_HALF_DAY
INTERVAL_DAY
如果你将其设为DAY,那么可能这一天中的所有闹钟都会被合并掉。
❑ void cancel(PendingIntent operation)
取消一个设置的闹钟
❑ void setTimeZone(String timeZone)
设置系统的默认时区。需要android.permission.SET_TIME_ZONE权限
======
下边来介绍方法里的参数
❑ ELAPSED_REALTIME
在指定的延时过后,发送广播,但不唤醒设备。
❑ ELAPSED_REALTIME_WAKEUP
在指定的延迟后,发送广播,并唤醒设备
该闹铃所用的时间是相对时间,是从系统启动后开始计时的,包括睡眠时间,可以通过调用SystemClock.elapsedRealtime()获得
❑ RTC
在指定的时刻,发送广播,但不唤醒设备
❑ RTC_WAKEUP
在指定的时刻,发送广播,并唤醒设备
该闹铃所用的时间是绝对时间,所用时间是UTC时间,可以通过调用 System.currentTimeMillis()获得
简单举例如下:5秒钟后发送一条广播
AlarmManager alarmMgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE); Intent intent = new Intent(getApplicationContext(), AlarmReceiver.class); int requestCode = 0; PendingIntent pendIntent = PendingIntent.getBroadcast(getApplicationContext(), requestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT); // 5秒后发送广播,只发送一次 我们用的时间都是long类型的毫秒值 int triggerAtTime = SystemClock.elapsedRealtime() + 5 * 1000; alarmMgr.set(AlarmManager.ELAPSED_REALTIME, triggerAtTime, pendIntent);
如果是重复发送的,修改最后一行代码如下,5秒后发送一条广播,之后每隔10秒再发送一次。。
//alarmMgr.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerAtTime, 10*1000, pendIntent);
取消闹铃的话执行如下操作:
alarmMgr.cancel(pendIntent);
// 与上面的intent匹配(filterEquals(intent))的闹钟会被取消
上边的看懂了的话,实现自动发送短信就简单那了,首先记得清单文件里添加发送短信的权限SEND_SMS,之后就是接收到广播以后将短信发送出去。
下边两句可以将短信发送出去,num为号码,s为短信内容。。。sendintent就是PendingIntent可以省略写为null,额外说明下,安卓发送短信是有字数限制的,带中文的只能发送70个,英文是160个,所以短信字数超标后得做处理。SmsManager有个方法可以分割短信的,至于如何区分中英文,没研究过,默认都做中文处理,以后有空再研究这个,或者哪个大师知道的话回帖告诉我下,谢了先。
SmsManager manger = SmsManager.getDefault();
manger.sendTextMessage(num, null, s, sendintent, null);
====本人写的小程序定时的获取过程。。
首先通过对话框获取用户选择的时间,比如
riqi="2013-8-2 :15:30:000";
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
alarmManger.set(AlarmManager.RTC,format.parse(riqi).getTime(), operation);//operation为Pendingintent的一个实例
其他一些时间的获取处理,感觉会处理时间就简单多了
//设定一个五秒后的时间 Calendar calendar=Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); calendar.add(Calendar.SECOND, 5); AlarmManager alarm=(AlarmManager)getSystemService(ALARM_SERVICE); alarm.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender); //或者以下面方式简化 //alarm.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+5*1000, sender);
PendingIntent额外知识:除了可以获取广播外,还能获得activity,service。
开发者可以通过调用getActivity(Context, int, Intent, int)
getBroadcast(Context, int, Intent, int)
getService(Context, int, Intent, int)
三种不同方式来得到一个PendingIntent实例。
其中:getActivity——通过该函数获得的PendingIntent可以直接启动新的activity, 就像调用 Context.startActivity(Intent)一样.不过值得注意的是要想这个新的Activity不再是当前进程存在的Activity 时。我们在intent中必须使用Intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
======
Android中的Alarm在设备处于睡眠模式时仍保持活跃,它可以设置来唤醒设备;然而,所有的Alarm在设备重启时都会被取消
为了创建一个新的Alarm,使用set方法并指定一个Alarm类型、触发时间和在Alarm触发时要调用的Intent。如果你设定的Alarm发生在过去,那么,它将立即触发。
- 定时发送短信之AlarmManage,SmsManger的使用
- 发短信的主要代码(SmsManger)
- alarmManage使用
- android之定时发送短信消息
- 使用spring-quartz 定时发送短信功能
- 使用PHP免费发送定时短信
- 短信定时连续发送
- 延迟发送:4款定时发送短信的应用程序
- 使用PhP免费发送定时短信(用于天气预报、定时提醒、短信祝福等等)
- AlarmManage
- android 定时发送短信实现
- Android_AlarmManage及定时发送短信
- Android_AlarmManage及定时发送短信
- JS获取短信验证码button的定时重新发送
- android之发送短信的方法研究
- android之发送短信的方法研究
- android之发送短信的方法研究
- java使用短信设备发送sms短信的示例(java发送短信)
- 线程,Handler,Message和Runnable
- POJ1657-Distance on Chessboard
- Java进阶书籍,高手就要一步一步积累。
- 10 Powerful Quotes From The Steve Jobs Movie
- what is the difference between jpa and hibernate
- 定时发送短信之AlarmManage,SmsManger的使用
- What To Do When The Boss Begs You To Stay
- 省市县联动
- Eclipse maven工程 Missing artifact com.sun:tools:jar:1.6.0:system 解决方法
- 配置归档日志双路径
- java源码阅读
- Android EditText样式
- Uva 10047 The Monocycle
- [ACM]Let the Balloon Rise