Android--判断发送短信后的状态/发送成功Or发送失败
相信用过诺基亚手机的朋友可能会记得,在短信发送之后,手机会显示发送手机的状态,Android同样也提供了相应的功能,而且实现这个功能的方法也很简单。
首先,我们需要在程序中注册两个权限:
1.接收短信的权限
2.发送短信的权限
<uses-permission android:name="android.permission.SEND_SMS"></uses-permission><uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
之后,我们需要开启两个模拟器测试程序的功能,下面是实现的截图,首先看第一张截图,是一个模拟器接收到另一个模拟器发送来的短信显示在通知栏里:
我们会看到这个模拟器的端口号叫做5554,这个就相当于手机号,我们发送短信只要把这个号码当做是手机号使用即可,下面这张截图是主程序的实现截图,点击发送按钮,短信被发出,同时,如果成功,系统会发送广播信息。
截图如下:
下面给出程序的实现代码:
public class EX06_14 extends Activity
{/* 建立两个mServiceReceiver对象,作为类成员变量 */private mServiceReceiver mReceiver01, mReceiver02;private Button mButton1;private TextView mTextView01;private EditText mEditText1, mEditText2;/* 自定义ACTION常数,作为广播的Intent Filter识别常数 */private static String SMS_SEND_ACTIOIN = "SMS_SEND_ACTIOIN";private static String SMS_DELIVERED_ACTION = "SMS_DELIVERED_ACTION";/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);mTextView01 = (TextView)findViewById(R.id.myTextView1);/* 电话号码 */mEditText1 = (EditText) findViewById(R.id.myEditText1);/* 短信内容 */mEditText2 = (EditText) findViewById(R.id.myEditText2);mButton1 = (Button) findViewById(R.id.myButton1);//mEditText1.setText("+886935123456");/* 设定预设为5556表示第二个模拟器的Port */mEditText1.setText("5556");mEditText2.setText("Hello DavidLanz!");/* 发送SMS短信按钮事件处理 */mButton1.setOnClickListener(new Button.OnClickListener(){@Overridepublic void onClick(View arg0){// TODO Auto-generated method stub/* 欲发送的电话号码 */String strDestAddress = mEditText1.getText().toString();/* 欲发送的短信内容 */String strMessage = mEditText2.getText().toString();/* 建立SmsManager对象 */SmsManager smsManager = SmsManager.getDefault();// TODO Auto-generated method stubtry{/* 建立自定义Action常数的Intent(给PendingIntent参数之用) */Intent itSend = new Intent(SMS_SEND_ACTIOIN);Intent itDeliver = new Intent(SMS_DELIVERED_ACTION);/* sentIntent参数为传送后接受的广播信息PendingIntent */PendingIntent mSendPI = PendingIntent.getBroadcast(getApplicationContext(), 0, itSend, 0);/* deliveryIntent参数为送达后接受的广播信息PendingIntent */PendingIntent mDeliverPI = PendingIntent.getBroadcast(getApplicationContext(), 0, itDeliver, 0);/* 发送SMS短信,注意倒数的两个PendingIntent参数 */smsManager.sendTextMessage(strDestAddress, null, strMessage, mSendPI, mDeliverPI);mTextView01.setText(R.string.str_sms_sending);}catch(Exception e){mTextView01.setText(e.toString());e.printStackTrace();}}});}/* 自定义mServiceReceiver重写BroadcastReceiver监听短信状态信息 */public class mServiceReceiver extends BroadcastReceiver{@Overridepublic void onReceive(Context context, Intent intent){// TODO Auto-generated method stub//mTextView01.setText(intent.getAction().toString());if (intent.getAction().equals(SMS_SEND_ACTIOIN)){try{/* android.content.BroadcastReceiver.getResultCode()方法 *///Retrieve the current result code, as set by the previous receiver.switch(getResultCode()){case Activity.RESULT_OK:/* 发送短信成功 *///mTextView01.setText(R.string.str_sms_sent_success);mMakeTextToast(getResources().getText(R.string.str_sms_sent_success).toString(),true);break;case SmsManager.RESULT_ERROR_GENERIC_FAILURE:/* 发送短信失败 *///mTextView01.setText(R.string.str_sms_sent_failed);mMakeTextToast(getResources().getText(R.string.str_sms_sent_failed).toString(),true);break;case SmsManager.RESULT_ERROR_RADIO_OFF:break;case SmsManager.RESULT_ERROR_NULL_PDU:break;} }catch(Exception e){mTextView01.setText(e.toString());e.getStackTrace();}}else if(intent.getAction().equals(SMS_DELIVERED_ACTION)){try{/* android.content.BroadcastReceiver.getResultCode()方法 */switch(getResultCode()){case Activity.RESULT_OK:/* 短信 *///mTextView01.setText(R.string.str_sms_sent_success);mMakeTextToast(getResources().getText(R.string.str_sms_rec_success).toString(),true);break;case SmsManager.RESULT_ERROR_GENERIC_FAILURE:/* 短信未送达 *///mTextView01.setText(R.string.str_sms_sent_failed);mMakeTextToast(getResources().getText(R.string.str_sms_rec_failed).toString(),true);break;case SmsManager.RESULT_ERROR_RADIO_OFF:break;case SmsManager.RESULT_ERROR_NULL_PDU:break;} }catch(Exception e){mTextView01.setText(e.toString());e.getStackTrace();}} }}public void mMakeTextToast(String str, boolean isLong){if(isLong==true){Toast.makeText(EX06_14.this, str, Toast.LENGTH_LONG).show();}else{Toast.makeText(EX06_14.this, str, Toast.LENGTH_SHORT).show();}}//这是重载Activity中的函数@Overrideprotected void onResume(){// TODO Auto-generated method stub/* 自定义IntentFilter为SENT_SMS_ACTIOIN Receiver */IntentFilter mFilter01;mFilter01 = new IntentFilter(SMS_SEND_ACTIOIN);mReceiver01 = new mServiceReceiver();registerReceiver(mReceiver01, mFilter01);/* 自定义IntentFilter为DELIVERED_SMS_ACTION Receiver */mFilter01 = new IntentFilter(SMS_DELIVERED_ACTION);mReceiver02 = new mServiceReceiver();registerReceiver(mReceiver02, mFilter01);super.onResume();}@Overrideprotected void onPause(){// TODO Auto-generated method stub/* 取消注册自定义Receiver */unregisterReceiver(mReceiver01);unregisterReceiver(mReceiver02);super.onPause();}
}
Android--判断发送短信后的状态/发送成功Or发送失败相关推荐
- android+发送短信的状态,Android--判断发送短信后的状态-发送成功Or发送失败.pdf
您所在位置:网站首页 > 海量文档  > 计算机 > 手机开发 Android--判断发送短信后的状态-发送成功Or发 ...
- python发送短信每天有限额吗_发送短信如何限制1小时内最多发送11条短信
发送短信如何限制1小时内最多发送11条短信 场景: 发送短信属于付费业务,有时为了防止短信攻击,需要限制发送短信的频率,例如在1个小时之内最多发送11条短信. 如何实现呢? 思路有两个 截至到当前时刻 ...
- Android之发送短信后按钮(60秒)变灰色每隔一秒递减显示
无论是做PC端还是android端,每次注册都有发送短信之后,60秒每隔一秒递减显示,如下图 这个地方需要注意的是按钮变灰色之后不能再点击,然后就是android更新UI,需要用handle,或者其它 ...
- linux 4g模块发送短信,OpenWRT使用4G模块上网和发送短信
1.配置ppp 配置参考:https://blog.csdn.net/qianguozheng/article/details/50543704 结果就是:lsusb能发现HUAWEI的4G模块,if ...
- android jni 发送短信,android5.0以上版本如何直接发送短信?
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 下面的代码在5.0一下版本能够直接发送,但5.0以上就会跳转到系统的短信发送界面,应该怎么修改呢?(我有看到过一个叫"招商致远手机证券" ...
- php 发送短信 sms,php 调用百度sms来发送短信的实现示例
BaiduSms 百度云 sms php版本 官方没有给出php版本的短信发送sdk, 在此借鉴 [ 点击这里 ],并在此基础上将方法改成 单例模式 在原来的基础上更加容易调用 1.打开 BaiduS ...
- android发送短信的两种方式,发送长短信的两种方式,群发短信
android 发送短信的方法 方法一:调用系统的短信APP,发送短信. Intent smsIntent = new Intent(Intent.ACTION_VIEW);smsIntent.set ...
- Android手机拨打电话、手动发送短信与自动拨打电话、自动发送短信(代码很简单哦)
Android实现手动拨打电话,即点击后跳转到手机默认电话号码输入页面,可以将相应号码传送过去: <span style="font-size:18px;"> Inte ...
- Android实现拨打电话和发送短信,Android手机拨打电话、手动发送短信与自动拨打电话、自动发送短信(代码很简单哦)...
Android实现手动拨打电话,即点击后跳转到手机默认电话号码输入页面,可以将相应号码传送过去: Intent intent = new Intent(Intent.ACTION_DIAL, Uri. ...
最新文章
- 顺序队列相关操作(C语言实现)
- CMake命令之list
- 【非凡程序员】 OC第一节课 (指针浅析)
- C# 数据结构--排序[下]
- 3G-SDI光端机产品技术参数规格及产品应用领域
- SpringBoot 整合 knife4j
- jdbc mysql分页_JDBC【数据库连接池、DbUtils框架、分页】
- Linux shell 的字符串截取
- android 跨进程点击方式总结
- 【初体验】valgrind分析程序性能
- ACM-ICPC 2018 徐州赛区网络预赛 J Maze Designer(最大生成树+LCA)
- python简易计算器界面_python 简易计算器
- 大数据笔记--Spark机器学习(第二篇)
- 嵌入式实践项目(二)——机房温度监控系统
- 基于对话框的MFC程序加载位图为背景图案
- mysql 查看等待事件_分享两个实用SQL--查看故障时间等待事件、问题sql及会话访问次数...
- 融合与创新:数据堂骨龄标注工具为医生赋能
- 【Linux】Linux指令串讲
- STM32的SPI外设片选只有一个怎么破?
- R语言曲线回归:多项式回归、多项式样条回归、非线性回归数据分析
热门文章
- CYQ.Data V5 分布式自动化缓存设计介绍(二)
- 三台主机分别部署LAMP
- jquery ajax(实现单独提交某个form)
- 【cocos2d-x从c++到js】02:解决在vs中修改js源文件无效
- commons fileUpload 文件上传下载
- Python进阶:切片的误区与高级用法
- NGINX发布支持动态配置的开源Web服务器
- java switch语句练习 从键盘输入2个数和一个运算符(+,-,*,/),输出运算结果
- 项目感言--功能的模块化
- 自动释放池autoreleasepool