黑马程序员技术交流社区
标题: 广播接收者---拦截外拨电话的例子 [打印本页]
作者: 张伟南 时间: 2016-11-15 21:16
标题: 广播接收者---拦截外拨电话的例子
Android拦截外拨电话 拦截监听外拨的电话,并进行处理:
向外拨打电话时系统会发出一个有序广播,虽然该广播最终会被拔号器里的广播接收者所接收并实现电话拔打,但我们可以在广播传递给拔号广播接收者之前先得到该广播,然后清除传递给拔号广播接收者的电话号码,在拔号广播接收者接收到该广播时,由于电话号码为null,因此取消电话拔打。
打开系统拨号界面
Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:110")); startActivity(intent);
file:///C:\Users\ZHANGW~1\AppData\Local\Temp\ksohtml\wps96D9.tmp.png外拨电话时,系统发出一个外拨电话的广播的有序广播,我们定义一个广播接收者来接受这个广播,系统应用的广播接收者的优先级一般是0,我们设置大于0的优先级,在系统之前拦截到广播,修改电话号码为null,系统处理广播时发现号码为null,就取消本次拨打电话的操作。
public class OutCallReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { setResultData(null); //清除电话,广播被传给系统的接收者后,因为电话为null,取消电话拔打 // 同样如果你想修改外拔的电话号码,可以这样做 // String phone = getResultData();//得到外拔电话 // setResultData(“12593”+ phone);//在电话前面加上12593 }}
file:///C:\Users\ZHANGW~1\AppData\Local\Temp\ksohtml\wps96DA.tmp.png
接收外拔电话广播Intent,在AndroidManifest.xml文件中的<application>节点里订阅此Intent:
<receiver android:name=".OutgoingCallReceiver"> <intent-filter android:priority="1"> 申明优先级为1 <action android:name="android.intent.action.NEW_OUTGOING_CALL"/> </intent-filter></receiver>
并且要进行权限声明:
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
作者: 码农来了 时间: 2016-11-16 17:49
学习了 谢谢楼主 66
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |