之前做项目,遇到需求:在短信发送失败后,弹出对话框,提示失败,如果用户点击retry,则开始重新发送,否则什么都不干。

高通8.0短信发送失败处理
平台发送短信后会监听短信是否发送成功,这里主要看失败的情况
如果失败有两个处理,两个处理分隔开(即没有直接关系)
1.发送短信失败的通知
2.更改UI,将短信sending状态改为failed状态,允许resend
也就是说,短信失败的话有两个地方可以知道,1是通知栏会有提示,2是短信item项状态会变成失败状态,此时点击item会重新发送

注意目前只是作简单的记录,由于当时任务时间紧迫,没有仔细研究

通知的实现

点击发送后流程如下:
handler发送消息
SmsSingleRecipientSender.sendMessage
SmsSingleRecipientSender intent.addAction MESSAGE_SENT_ACTION
sentIntents.add(PendingIntent.getBroadcast(mContext, requestCode, intent, 0));

handler处理消息
SmsReceiverService.handleMessage(case Action MESSAGE_SENT_ACTION)
SmsReceiverService.handleSmsSent
SmsReceiverService.messageFailedToSend
MessagingNotification.notifySendFailed
MessagingNotification.notificationMgr.notify(MESSAGE_FAILED_NOTIFICATION_ID, notification);
这里应该需要关注PendingIntent,应该就是这个PendingIntent来实时发现短信的发送失败的。
当时的需求可以在弹出通知同时显示短信发送失败的对话框。

界面UI更改的实现

应该是:监听数据库变化,更改界面

MessageListAdapter:CursorAdapter.changeCursor
MessageListAdapter:BaseAdapter.notifyDataSetChanged
MessageListAdapter:CursorAdapter.bindView
MessageListItem:bind
MessageListItem:drawRightStatusIndicator

此处应该关心的应该是ListAdapter如何监听数据库变化。

retry实现

MessageListItem.onMessageListItemClick
MessageListItem.sendMessage(mMessageItem, MSG_LIST_RESEND);
retry就是点击按钮时查看短信的状态,如果是失败的,就用handler发送消息,实现重新发送

总结

所以短信发送失败的状态如何被监听到呢,有2条路
1,使用listAdapter监听数据库变化
2,使用pendingIntent监听发送状态

Android 短信发送失败是如何监听到的相关推荐

  1. Android SMSC设置失败短信发送失败问题

    1:获得PDU码,, 比如 短信中心号码是  +8613800760500 先2位分组,后面不够的加一个f  那么就是  86 13 80 07 60 50 0f                    ...

  2. Android短信发送

    1.布局文件: activity_sms.xml <?xml version="1.0" encoding="utf-8"?> <Linear ...

  3. Android短信发送流程之多收件人发送(原)

    前面的< Android短信发送流程之长短信发送 >中介绍了长短信对于普通短信的区别,而对于多收件人的情况,在SmsMessageSender的queueMessage()方法中我们了解到 ...

  4. 短信发送失败之短信中心号码异常

    发送短信时,短信中心号码默认是从卡里面的 EFsmsp 读到的,有的卡不符合规范,SIM 卡里短信中心号码为空,导致短信发送失败. 排查这种情况,Android手机,可以通过*#*#4636#*#*进 ...

  5. android短信功能裁剪,Android短信发送功能实现技巧分享

    如现在启动一模拟器id 号为5554,运行cmd telnet localhost 5554 输入help 可以看到很多用于模拟器中的功能命令 gsm call 134343434   // 便是呼叫 ...

  6. Android短信发送流程之长短信发送(原)

    从前面< Android短信发送流程之普通短信发送 >流程看到,长短信与普通短信的流程从SmsManager的sendMultipartTextMessage()方法开始区分,现在我们来看 ...

  7. 阿里云短信服务isv.INVALID_PARAMETERS返回,短信发送失败

    阿里云短信服务isv.INVALID_PARAMETERS返回,短信发送失败 因为阿里云这个参数需要json格式,所以你需要debug一下看看这个参数是不是json格式. 我的问题是传参数的时候,多加 ...

  8. BaoCms短信发送失败问题解答

    BAOCMS(又称生活宝系统)是一款本地生活电商O2O门户系统,程序是基于PHP+mysql开发,系统安全稳定,支持二次开发,目前BAOCMS已经成为国内使用最多.功能最强大.性能最稳定的本地电商生活 ...

  9. 解决ectouch发货提醒短信发送失败问题

    ECTouch系统是一款免费开源的手机商城系统,采用国际标准HTML5+CSS3研发,便于二次开发,小编上次也讲解过如何进行短信接口的替换,前几天一个客户找到我说发货提醒短信发送失败,其他都是正常使用 ...

最新文章

  1. 以58帮帮为例看58同城典型技术架构演变
  2. 在lnmp1.3布置的web服务器上运行thinkphp3.2.3项目pathinfo路径模式
  3. 第12课:优化神经网络——网络初始化技巧与超参数调试
  4. 【TensorFlow】TensorFlow从浅入深系列之五 -- 教你详解滑动平均模型
  5. golang CI: Use result of type assertion to simplify cases SCC-S1034
  6. 泰顺县人事劳动社会保障局灾备集成项目招标
  7. 二分法:木棒切割问题
  8. 你还在做描述性数据分析吗?卡方检验案例实操
  9. html5模板区别,网页设计和平面设计理念的六大区别
  10. 微博登录过程分析以及scrapy模拟登录微博
  11. linux使用163的yum源配置
  12. 机器学习周志华第一章
  13. 最新二次开发仿包图网素材图片源码
  14. 水仙花数n位c语言程序,水仙花数C语言的
  15. 谷歌SEO入门的基础知识
  16. WPF Deactivated和Activated简单使用
  17. IDEA springboot 项目启动报错 Shorten the command line via JAR manifest or via a classpath file and rerun
  18. css html 编写凌形图案
  19. 计算机水平毕业研究生7分落户,研究生毕业如何进行上海积分落户?
  20. Cryptology Unlocked

热门文章

  1. Convolutional Neural Networks for Visual Recognition
  2. ICIP 2009 Papers
  3. 计算机基本配置要求,Windows10系统对电脑的标准配置要求
  4. js图片转base64, 支持网络地址 和 本地地址
  5. 永远不要对父母说这样的话(很感动!)
  6. skt7850鸿蒙策略,2017LCK春季赛3月5日skt vs kt直播视频:skt 2:1 kt获胜
  7. QT中学习Opengl---(纹理环绕方式与过滤)
  8. case when then 与 count联合使用
  9. android 充电图标
  10. 成为女神同桌,我只用一行代码