Android后台发送短信 是否发送成功提醒
2013-11-29 12:42
603 查看
目标:按下发送按钮,通过后台向某一特定号码发送一条已编辑好内容的短信。以Toast的形式提示短信是否发送成功、对方是否接收成功。
思路:
1.UI设计非常简单,实现一个按钮即可,不作赘述。
2.这里是发送短文本内容的短信,使用sendTextMessage函数实现,需要使用到SmsManager类。该函数完整定义如下:
public void sendTextMessage (String destinationAddress, String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent)
1.destinationAddress : 目标手机号
2.scAddress :短信中心号码,若为空则使用默认值。
3.text :发送的文本内容。
4.sentIntent : 如果不为空,当消息成功发送或失败这个PendingIntent就调用PendingIntent 中的Intent。
5.deliveryIntent :如果不为空,当消息成功传送到接收者这个PendingIntent就调用PendingIntent 中的Intent 。
使用sentIntent 和 deliveryIntent 就可以完成目标中的提醒功能。
具体实现:
1.添加权限:<uses-permission android:name="android.permission.SEND_SMS"></uses-permission>
2.添加两个广播类:
2.1 短信是否发送成功:
至此,完成目标功能。
如果需要发送长文本短信,可以使用sendMultipartTextMessage和divideMessage函数(用于将长文本内容自动分段)实现。这里不作具体介绍了,直接贴上代码:
思路:
1.UI设计非常简单,实现一个按钮即可,不作赘述。
2.这里是发送短文本内容的短信,使用sendTextMessage函数实现,需要使用到SmsManager类。该函数完整定义如下:
public void sendTextMessage (String destinationAddress, String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent)
1.destinationAddress : 目标手机号
2.scAddress :短信中心号码,若为空则使用默认值。
3.text :发送的文本内容。
4.sentIntent : 如果不为空,当消息成功发送或失败这个PendingIntent就调用PendingIntent 中的Intent。
5.deliveryIntent :如果不为空,当消息成功传送到接收者这个PendingIntent就调用PendingIntent 中的Intent 。
使用sentIntent 和 deliveryIntent 就可以完成目标中的提醒功能。
具体实现:
1.添加权限:<uses-permission android:name="android.permission.SEND_SMS"></uses-permission>
2.添加两个广播类:
2.1 短信是否发送成功:
public class sendBroadcast extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub //判断短信是否发送成功 switch (getResultCode()) { case Activity.RESULT_OK: Toast.makeText(context, "短信发送成功", Toast.LENGTH_LONG).show() ; break ; default: Toast.makeText(context, "短信发送失败", Toast.LENGTH_LONG).show() ; break ; } } }2.2 短信是否被接收:
public class receivedBroadcast extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub //表示对方成功接收到短信 Toast.makeText(context, "对方接收成功", Toast.LENGTH_LONG).show() ; } }3.对广播类完成注册:
<receiver android:name="com.example.smsto_background_2.sendBroadcast" > <intent-filter> <action android:name="sendmessage" /> </intent-filter> </receiver> <receiver android:name="com.example.smsto_background_2.receivedBroadcast" > <intent-filter> <action android:name="receivemessage" /> </intent-filter> </receiver>4.在按钮监听器实现功能:
String sentStr = "sendmessage" ; String receiveStr = "receivemessage" ; SmsManager smsMgr = SmsManager.getDefault() ; Intent sent_intent = new Intent(sentStr) ; PendingIntent sentIntent = PendingIntent.getBroadcast(MainActivity.this, 0, sent_intent, 0) ; //接收报告:发送方发送短信到目标手机后,若对方成功接收,则返回给运营商一个信号,然后运行商再将这个已成功接收的信号返回给发送方 Intent delivery_intent = new Intent(receiveStr) ; PendingIntent deliveryIntent = PendingIntent.getBroadcast(MainActivity.this, 0, delivery_intent, 0) ; String phonenum = "10010" ; smsMgr.sendTextMessage(phonenum, null, "here is a test program.", sentIntent, deliveryIntent) ;
至此,完成目标功能。
如果需要发送长文本短信,可以使用sendMultipartTextMessage和divideMessage函数(用于将长文本内容自动分段)实现。这里不作具体介绍了,直接贴上代码:
SmsManager sms = SmsManager.getDefault() ; String phonenum = "10010" ; String msg = "here is a test program." ; //如果短信内容过长,自动分段 ArrayList<String> list = sms.divideMessage(msg) ; sms.sendMultipartTextMessage(phonenum, null, list, null, null) ;
相关文章推荐
- android群发短信时判断短信是否发送成功
- 如何判断android 短信发送(sendTextMessage)是否成功
- android发送短信带监听是否发送成功功能
- 如何判断android 短信发送(sendTextMessage)是否成功
- android 短信是否发送成功
- android判断短信是否发送成功[动态注册广播]
- Android发送短信,并监听短信发送后是否发送成功的实现方法
- 物联网平台机智云Android开源框架入门之旅(四) 分析怎么做好指令是否成功发送到云端的逻辑处理。
- android 后台发送短信,电话簿,邮件,开机自启动
- 【客户下单】后台系统自动分单成功生成工单发送短信
- Android--判断发送短信后的状态/发送成功Or发送失败
- android短信后台发送信息判断
- Android--判断发送短信后的状态/发送成功Or发送失败
- Android--判断发送短信后的状态/发送成功Or发送失败
- Android获取手机号码,后台发送短信以及监听短信发送结果。
- 发送短信及其判断是否发送成功
- android 发送短信 怎样做到一条一条的发送,仅仅有在上一条发送成功之后才发送下一条短信
- 【邪道】Android在后台以多线程方式不断对同一目标发送短信
- android后台发送短信的实现
- Android--判断发送短信后的状态/发送成功Or发送失败