`
JasonShieh
  • 浏览: 527528 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

自定义短信发送后,对短信发送状态进行侦听

 
阅读更多
如果不是用系统自带的短信发送Activity,那么我们自己发送到短信会有很多功能无法实现。例如,不知道短信当前的发送状态,不知道对方的接收情况。所以,我们要对发送后的短信进行侦听:

SmsManager.sendTextMessage(String destinationAddress, String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent)

1. 传入参数:sentIntent
2. 注册BroadcastReceiver 用于接受sentIntent

public void sendSMS(String phoneNumber, String message) {          
        String SENT = "SMS_SENT";  
        String DELIVERED = "SMS_DELIVERED";  
   
        PendingIntent sentPI = PendingIntent.getBroadcast(this, 0,  
            new Intent(SENT), 0);  
   
        PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,  
            new Intent(DELIVERED), 0);  
   
        //---when the SMS has been sent---  
        registerReceiver(new BroadcastReceiver(){  
            @Override  
            public void onReceive(Context arg0, Intent arg1) {  
                switch (getResultCode())  
                {  
                    case Activity.RESULT_OK:  
                        Toast.makeText(getBaseContext(), "SMS sent",   
                                Toast.LENGTH_SHORT).show();  
                        break;  
                    case SmsManager.RESULT_ERROR_GENERIC_FAILURE:  
                        Toast.makeText(getBaseContext(), "Generic failure",   
                                Toast.LENGTH_SHORT).show();  
                        break;  
                    case SmsManager.RESULT_ERROR_NO_SERVICE:  
                        Toast.makeText(getBaseContext(), "No service",   
                                Toast.LENGTH_SHORT).show();  
                        break;  
                    case SmsManager.RESULT_ERROR_NULL_PDU:  
                        Toast.makeText(getBaseContext(), "Null PDU",   
                                Toast.LENGTH_SHORT).show();  
                        break;  
                    case SmsManager.RESULT_ERROR_RADIO_OFF:  
                        Toast.makeText(getBaseContext(), "Radio off",   
                                Toast.LENGTH_SHORT).show();  
                        break;  
                }  
            }  
        }, new IntentFilter(SENT));  
   
        //---when the SMS has been delivered---  
        registerReceiver(new BroadcastReceiver(){  
            @Override  
            public void onReceive(Context arg0, Intent arg1) {  
                switch (getResultCode())  
                {  
                    case Activity.RESULT_OK:  
                        Toast.makeText(getBaseContext(), "SMS delivered",   
                                Toast.LENGTH_SHORT).show();  
                        break;  
                    case Activity.RESULT_CANCELED:  
                        Toast.makeText(getBaseContext(), "SMS not delivered",   
                                Toast.LENGTH_SHORT).show();  
                        break;                          
                }  
            }  
        }, new IntentFilter(DELIVERED));          
   
        SmsManager sms = SmsManager.getDefault();  
        sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);      
          
    }  

分享到:
评论

相关推荐

    自定义事件侦听器

    在Java中,事件处理主要基于Observer模式,它定义了对象间的一种一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。标准的Java API提供了诸如ActionListener、MouseListener...

    服务器端侦听软件

    用于在服务器端侦听上传到服务器的数据。该工具是用C#编写的 ,使用的时候只要侦听端口号,以及要创建相应的数据库表。

    VS2008数据侦听

    【VS2008数据侦听】是一种技术,允许开发者实时监控SQL Server数据库表中的数据变化,以便在数据发生变化时及时做出响应。这种功能在开发需要实时数据更新的应用程序时非常有用,例如股票交易系统、在线拍卖平台或者...

    时间类型侦听函数

    - **定时器**: 定时器是时间类型侦听函数的基础,它允许程序在特定时间间隔后执行某项任务。常见的定时器API有JavaScript中的`setTimeout`和`setInterval`,C++中的`std::chrono`库等。 - **事件驱动编程**: 事件...

    vue自定义模板vue自定义模板

    6. **计算属性与侦听器**:计算属性(`computed`)可以根据其他数据属性进行计算,提供动态的导航状态。侦听器(`watch`)则可以监听数据的变化,当某些值发生变化时执行相应操作。 7. **子组件通信**:如果导航...

    TCP.rar_侦听_网络侦听

    【TCP.rar_侦听_网络侦听】是一个与网络编程相关的资源,主要涉及TCP协议的实现和网络侦听技术。这个资源包含了一个使用VC(Visual C++)编写的TCP网络侦听示例工程的源代码,是学习和理解TCP网络通信机制的一个宝贵...

    8种加密狗侦听工具8种加密狗侦听工具

    8种加密狗侦听工具8种加密狗侦听工具8种加密狗侦听工具

    UDP.rar_UDP_UDP侦听_UDP发送_UDP接收_java接收端口

    在上述的UDPServer示例中,就已经展示了如何进行UDP的侦听。 **Java接收端口** 在Java中,使用DatagramSocket的构造函数可以指定接收端口。例如,`new DatagramSocket(port)`将创建一个绑定到指定port的socket,...

    自定义动画滚动侦听器

    "自定义动画滚动侦听器"是一个关键的组件,它允许我们监听并控制滚动事件,同时添加自定义动画效果,提升用户体验。这个项目由作者borjabravo10创建,并在GitHub上命名为"FocusResize",它提供了一个优秀的实例来...

    载波侦听多路访问原理

    (3)发送数据:在发送数据的同时,站点继续侦听网络,确信没有其他站点在同时传输数据才继续传输数据。 (4)冲突检测:若有冲突,则立即停止发送数据,但是要发送一个加强冲突的 JAM(阻塞)信号,以便使网络上...

    模拟Ethernet帧的发送过程

    3. **发送流程**:每个线程在尝试发送数据前检查总线状态,如果为空闲则开始发送;如果在发送过程中检测到冲突,就按照CSMA/CD算法执行后退和重试。 4. **结果反馈**:程序应提供可视化的反馈,例如通过字符串提示...

    串口侦听器

    软件针对不同专业用户的关注内容,对信息进行分类,提供了 具有信息染色功能的多视图窗口供显示、分析使用,并提供查找功能方便用户查找相关信息。 <br>SerialTrace拥有强大的实时数据捕捉、记录功能,支持高强度...

    arp 侦听工具,局域网工具

    1. **ARP请求和应答捕获**:这种工具能够捕捉到网络中发送的每一个ARP请求和应答,帮助用户了解网络中的设备交互情况。 2. **异常检测**:当出现ARP欺骗或ARP缓存中毒等攻击时,arp 侦听工具可以快速发现异常的ARP...

    网络侦听以及反侦听的原理和实现

    首先简要介绍了网络侦听的原理及其潜在的安全隐患,讲述了侦听技术在Unix和Windows环 境下的几种实现技术;说明了如何检测侦听器的存在;最后提出了一种切实可行的、用来消除网络侦听 的方案。

    采用单片机PCA捕捉比较模块进行载波侦听的多主RS485通讯系统的设计.pdf

    在本设计中,避免了碰撞后发送阻塞信息的做法,采用非坚持算法,侦听到总线忙或发送过程中发生数据碰撞后,不再继续监听,而是根据退避算法随机延迟一段时间后重新侦听。当侦听发现信道空闲时,则发送准备好的数据帧...

    多线程 TCIIP 侦听器

    这个示例中,`StartListening`方法启动侦听器,`AcceptClients`方法在一个无限循环中等待新的连接,接收到连接后,它会启动一个新的线程`HandleClientConnection`来处理客户端的通信。这样,服务器可以同时处理多个...

    网络侦听以及反侦听原理

    - **端口扫描**:定期进行端口扫描,查找开放或可疑的端口,这些端口可能是侦听器正在使用的。 - **网络日志审查**:检查网络设备的日志记录,寻找未经授权的访问尝试或其他异常行为。 - **主动探测**:使用专门的...

    Ethernet帧的发送与接收

    3. **载波侦听**:载波侦听是指在网络设备发送数据前,检查网络上是否有其他设备正在传输。如果检测到有信号,表示网络线路繁忙,设备将等待直到线路变为空闲状态。 4. **冲突检测**:当两个或更多设备同时发送数据...

    TCPServer_等待tcp侦听器_TcpServer_islandqdt_everyvom_

    3. **TCP侦听器**:在“等待tcp侦听器”这一标签中,指的是服务器持续监听状态,等待新的客户端连接。侦听器通常会设置为非阻塞模式,以便处理多个并发连接。 4. **TcpServer实现**:在编程中,创建TCP服务器通常...

Global site tag (gtag.js) - Google Analytics