相信用过诺基亚手机的朋友可能会记得,在短信发送之后,手机会显示发送手机的状态,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发送失败相关推荐

  1. android+发送短信的状态,Android--判断发送短信后的状态-发送成功Or发送失败.pdf

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbsp手机开发 Android--判断发送短信后的状态-发送成功Or发 ...

  2. python发送短信每天有限额吗_发送短信如何限制1小时内最多发送11条短信

    发送短信如何限制1小时内最多发送11条短信 场景: 发送短信属于付费业务,有时为了防止短信攻击,需要限制发送短信的频率,例如在1个小时之内最多发送11条短信. 如何实现呢? 思路有两个 截至到当前时刻 ...

  3. Android之发送短信后按钮(60秒)变灰色每隔一秒递减显示

    无论是做PC端还是android端,每次注册都有发送短信之后,60秒每隔一秒递减显示,如下图 这个地方需要注意的是按钮变灰色之后不能再点击,然后就是android更新UI,需要用handle,或者其它 ...

  4. linux 4g模块发送短信,OpenWRT使用4G模块上网和发送短信

    1.配置ppp 配置参考:https://blog.csdn.net/qianguozheng/article/details/50543704 结果就是:lsusb能发现HUAWEI的4G模块,if ...

  5. android jni 发送短信,android5.0以上版本如何直接发送短信?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 下面的代码在5.0一下版本能够直接发送,但5.0以上就会跳转到系统的短信发送界面,应该怎么修改呢?(我有看到过一个叫"招商致远手机证券" ...

  6. php 发送短信 sms,php 调用百度sms来发送短信的实现示例

    BaiduSms 百度云 sms php版本 官方没有给出php版本的短信发送sdk, 在此借鉴 [ 点击这里 ],并在此基础上将方法改成 单例模式 在原来的基础上更加容易调用 1.打开 BaiduS ...

  7. android发送短信的两种方式,发送长短信的两种方式,群发短信

    android 发送短信的方法 方法一:调用系统的短信APP,发送短信. Intent smsIntent = new Intent(Intent.ACTION_VIEW);smsIntent.set ...

  8. Android手机拨打电话、手动发送短信与自动拨打电话、自动发送短信(代码很简单哦)

    Android实现手动拨打电话,即点击后跳转到手机默认电话号码输入页面,可以将相应号码传送过去: <span style="font-size:18px;"> Inte ...

  9. Android实现拨打电话和发送短信,Android手机拨打电话、手动发送短信与自动拨打电话、自动发送短信(代码很简单哦)...

    Android实现手动拨打电话,即点击后跳转到手机默认电话号码输入页面,可以将相应号码传送过去: Intent intent = new Intent(Intent.ACTION_DIAL, Uri. ...

最新文章

  1. 顺序队列相关操作(C语言实现)
  2. CMake命令之list
  3. 【非凡程序员】 OC第一节课 (指针浅析)
  4. C# 数据结构--排序[下]
  5. 3G-SDI光端机产品技术参数规格及产品应用领域
  6. SpringBoot 整合 knife4j
  7. jdbc mysql分页_JDBC【数据库连接池、DbUtils框架、分页】
  8. Linux shell 的字符串截取
  9. android 跨进程点击方式总结
  10. 【初体验】valgrind分析程序性能
  11. ACM-ICPC 2018 徐州赛区网络预赛 J Maze Designer(最大生成树+LCA)
  12. python简易计算器界面_python 简易计算器
  13. 大数据笔记--Spark机器学习(第二篇)
  14. 嵌入式实践项目(二)——机房温度监控系统
  15. 基于对话框的MFC程序加载位图为背景图案
  16. mysql 查看等待事件_分享两个实用SQL--查看故障时间等待事件、问题sql及会话访问次数...
  17. 融合与创新:数据堂骨龄标注工具为医生赋能
  18. 【Linux】Linux指令串讲
  19. STM32的SPI外设片选只有一个怎么破?
  20. R语言曲线回归:多项式回归、多项式样条回归、非线性回归数据分析

热门文章

  1. CYQ.Data V5 分布式自动化缓存设计介绍(二)
  2. 三台主机分别部署LAMP
  3. jquery ajax(实现单独提交某个form)
  4. 【cocos2d-x从c++到js】02:解决在vs中修改js源文件无效
  5. commons fileUpload 文件上传下载
  6. Python进阶:切片的误区与高级用法
  7. NGINX发布支持动态配置的开源Web服务器
  8. java switch语句练习 从键盘输入2个数和一个运算符(+,-,*,/),输出运算结果
  9. 项目感言--功能的模块化
  10. 自动释放池autoreleasepool