如果不是用系统自带的短信发送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数据侦听】是一种技术,允许开发者实时监控SQL Server数据库表中的数据变化,以便在数据发生变化时及时做出响应。这种功能在开发需要实时数据更新的应用程序时非常有用,例如股票交易系统、在线拍卖平台或者...
- **定时器**: 定时器是时间类型侦听函数的基础,它允许程序在特定时间间隔后执行某项任务。常见的定时器API有JavaScript中的`setTimeout`和`setInterval`,C++中的`std::chrono`库等。 - **事件驱动编程**: 事件...
6. **计算属性与侦听器**:计算属性(`computed`)可以根据其他数据属性进行计算,提供动态的导航状态。侦听器(`watch`)则可以监听数据的变化,当某些值发生变化时执行相应操作。 7. **子组件通信**:如果导航...
【TCP.rar_侦听_网络侦听】是一个与网络编程相关的资源,主要涉及TCP协议的实现和网络侦听技术。这个资源包含了一个使用VC(Visual C++)编写的TCP网络侦听示例工程的源代码,是学习和理解TCP网络通信机制的一个宝贵...
8种加密狗侦听工具8种加密狗侦听工具8种加密狗侦听工具
在上述的UDPServer示例中,就已经展示了如何进行UDP的侦听。 **Java接收端口** 在Java中,使用DatagramSocket的构造函数可以指定接收端口。例如,`new DatagramSocket(port)`将创建一个绑定到指定port的socket,...
"自定义动画滚动侦听器"是一个关键的组件,它允许我们监听并控制滚动事件,同时添加自定义动画效果,提升用户体验。这个项目由作者borjabravo10创建,并在GitHub上命名为"FocusResize",它提供了一个优秀的实例来...
(3)发送数据:在发送数据的同时,站点继续侦听网络,确信没有其他站点在同时传输数据才继续传输数据。 (4)冲突检测:若有冲突,则立即停止发送数据,但是要发送一个加强冲突的 JAM(阻塞)信号,以便使网络上...
3. **发送流程**:每个线程在尝试发送数据前检查总线状态,如果为空闲则开始发送;如果在发送过程中检测到冲突,就按照CSMA/CD算法执行后退和重试。 4. **结果反馈**:程序应提供可视化的反馈,例如通过字符串提示...
软件针对不同专业用户的关注内容,对信息进行分类,提供了 具有信息染色功能的多视图窗口供显示、分析使用,并提供查找功能方便用户查找相关信息。 <br>SerialTrace拥有强大的实时数据捕捉、记录功能,支持高强度...
1. **ARP请求和应答捕获**:这种工具能够捕捉到网络中发送的每一个ARP请求和应答,帮助用户了解网络中的设备交互情况。 2. **异常检测**:当出现ARP欺骗或ARP缓存中毒等攻击时,arp 侦听工具可以快速发现异常的ARP...
首先简要介绍了网络侦听的原理及其潜在的安全隐患,讲述了侦听技术在Unix和Windows环 境下的几种实现技术;说明了如何检测侦听器的存在;最后提出了一种切实可行的、用来消除网络侦听 的方案。
在本设计中,避免了碰撞后发送阻塞信息的做法,采用非坚持算法,侦听到总线忙或发送过程中发生数据碰撞后,不再继续监听,而是根据退避算法随机延迟一段时间后重新侦听。当侦听发现信道空闲时,则发送准备好的数据帧...
这个示例中,`StartListening`方法启动侦听器,`AcceptClients`方法在一个无限循环中等待新的连接,接收到连接后,它会启动一个新的线程`HandleClientConnection`来处理客户端的通信。这样,服务器可以同时处理多个...
- **端口扫描**:定期进行端口扫描,查找开放或可疑的端口,这些端口可能是侦听器正在使用的。 - **网络日志审查**:检查网络设备的日志记录,寻找未经授权的访问尝试或其他异常行为。 - **主动探测**:使用专门的...
3. **载波侦听**:载波侦听是指在网络设备发送数据前,检查网络上是否有其他设备正在传输。如果检测到有信号,表示网络线路繁忙,设备将等待直到线路变为空闲状态。 4. **冲突检测**:当两个或更多设备同时发送数据...
3. **TCP侦听器**:在“等待tcp侦听器”这一标签中,指的是服务器持续监听状态,等待新的客户端连接。侦听器通常会设置为非阻塞模式,以便处理多个并发连接。 4. **TcpServer实现**:在编程中,创建TCP服务器通常...