最近一直在研究某些手机软件的黑名单设置功能,通过查阅资料发现手机中的某些软件的黑名单设置都是通过手机的系统广播入手处理的,熟悉Android广播机制的应该知道,手机在开机时会发出一些广播,在锁屏和解屏时也会发出广播,在拨打电话和来电时也会发出广播,手机的有系统发出的广播还有很多,想要了解的可以查查Android手机系统广播机制。而黑名单拦截电话就是采用监听系统广播处理的。
在这片文章中将会分析如何实现拨打电话时对电话号码劫持病修改成任意的号码。至于如何拦截来电,将在下篇文章中详细介绍。
当我们在拨打电话时,系统会发出NEW_OUTGOING_CALL的,我们可以自定义广播接收器,来接受这个广播,然后在实现自己想要的功能。具体实现代码如下:
以下的为自定义的广播接收器
注册广播分为静态注册和动态注册,动态注册的优先级要高于静态注册,我实现方式是在Service中动态注册广播,代码如下:
最后,实现该功能还必须需要注册两个权限,分别为android.permission.READ_PHONE_STATE,
android.permission.MOUNT_UNMOUNT_FILESYSTEMS
实现以上代码后,我们就可以任意的修改播出去的电话。