如果你想监听自己或者别人接收到的短信,设置黑名单等功能,那么就需要以下功能监听短信,并进行提示或者响应的处理:
当系统收到短信时,会发出一个广播Intent,Intent的action名称为android.provider.Telephony.SMS_RECEIVED,该Intent存放了系统接收到的短信内容,我们使用名称“pdus”即可从Intent中获取到短信内容:
public class IncomingSMSReceiver extends BroadcastReceiver {private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(SMS_RECEIVED)) { SmsManager sms = SmsManager.getDefault(); //得到短信管理器 Bundle bundle = intent.getExtras(); //得到意图中的bundle对象 if (bundle != null) { Object[] pdus = (Object[]) bundle.get("pdus"); //得到名称为"pdus"的对象,是一个Object数组,里面的每一个元素为一个byte[]数组 SmsMessage[] messages = new SmsMessage[pdus.length]; for (int i = 0; i < pdus.length; i++) messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); for (SmsMessage message : messages){ String msg = message.getMessageBody(); //短信内容 String to = message.getOriginatingAddress(); //短信地址 sms.sendTextMessage(to, null, msg, null, null); }
}
}
}
}
在AndroidManifest.xml文件中的<application>节点里对接收到短信的广播Intent进行订阅:
<receiver android:name=".IncomingSMSReceiver"> <intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
在AndroidManifest.xml文件中添加以下权限:<uses-permission android:name="android.permission.RECEIVE_SMS"/><!-- 接收短信权限 --><uses-permission android:name="android.permission.SEND_SMS"/><!-- 发送短信权限 -->
如果想在播出的电话加上特殊提示或者默认加上区号,12593优惠号等,那么就需要监听外拨的电话,并进行处理:
向外拨打电话时系统会发出一个有序广播,虽然该广播最终会被拔号器里的广播接收者所接收并实现电话拔打,但我们可以在广播传递给拔号广播接收者之前先得到该广播,然后清除传递给拔号广播接收者的电话号码,在拔号广播接收者接收到该广播时,由于电话号码为null,因此取消电话拔打。
public class OutgoingCallReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
setResultData(null); //清除电话,广播被传给系统的接收者后,因为电话为null,取消电话拔打
// 同样如果你想修改外拔的电话号码,可以这样做
// String phone = getResultData();//得到外拔电话
// setResultData(“12593”+ phone);//在电话前面加上12593
}
}
接收外拔电话广播Intent,在AndroidManifest.xml文件中的<application>节点里订阅此Intent:
<receiver android:name=".OutgoingCallReceiver">
<intent-filter android:priority="1">
<action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
</intent-filter>
</receiver>
并且要进行权限声明:
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
分享到:
相关推荐
Android中采用广播接收者实现短信监控器、拦截外拨电话功能案例!
本篇文章主要介绍了Android短信的发送和广播接收实现短信的监听,可以实现短信收发,有兴趣的可以了解一下。
Android之广播接收者课程对应的代码
Android 短信接收监听的两种方式,由于Android6.0后很多权限需要动态添加,所以本demo首先要解决的问题是如何添加短信的动态权限,而后使用两种方式监听短信接收
Android中使用广播接收者组件实现简单强迫用户下线功能!
Android-服务与广播接收者实现本地音乐播放 CSDN博客:http://blog.csdn.net/u014657752
一、广播发送者&广播接收者介绍 1.广播接收者 广播接收者简单地说就是接收广播意图的Java类,此Java类继承BroadcastReceiver类,重写: public void onReceive(Context context,Intent intent),其中intent可以获得...
Android之广播接收者
Android 实现短信发送 实现监听短信发送状态 对方是否已经接收到 并且保存至发件箱
Android拦截接收短信
android中广播接收者,有序广播和无序广播 sendOrderBroadcast sendBroadcast
安卓广播监听按键事件和屏幕熄屏亮屏监听,BroadcastReceiver使用
Android自学笔记-17-广播接收者(BroadcastReceiver)
android 广播接收完整源码。十分完整的android广播接收完整源码。
android广播接收例子
每一部手机都具有短信接收和发送功能,下面我们通过代码来实现接收和发送短信功能。 一、接收短信 1、创建内部广播接收器类,接收系统发出的短信广播 2、从获得的内容中解析出短信发送者和短信内容 3、在...
里面涉及到执行Root命令、获取Android开机启动列表、启用主Activity,开启开机自动运行、禁用360进程与服务、动态创建一个优先级最高的短信广播接收者、动态创建一个关机广播接收者。以下分别说明三者的实现: 短信...
参考博客:https://blog.csdn.net/Da_Xiong000/article/details/105326901
这里介绍如何创建广播、如何发送一个无序广播和有序广播、以及监听短信以及监听呼出电话(当我们发短信和打电话,系统就会发一个广播,我们可以拦截此广播进行监听短信以及监听呼出电话)。 定义广播接收者 1.定义类...