安卓手机能不能做到拒接黑名单电话?

如题所述

第1个回答  2022-08-10
可以的。
只要手机开机有信号就可以接收到对方的信息的。当设置为拒绝来电或者黑名单的时候,对方发送短信的话,手机还是能够收到这条短信的,短信保存在你的手机黑名单或者拒绝来电记录里,记录里除了有拒接通话记录还有短信拦截记录。
短信拦截其实是比较简单的一种,网上有很多相关介绍,这里主要介绍一下在写的过程中遇到的一些问题。
首先短信拦截的实现原理也是监听短信的广播,然后判断短信的号码,判断是否是在黑名单,如果是的话就用abortBroadcast方法结束广播的传递就可以了。其中在做的过程中最主要的问题不是收到监听,而且最先收到监听,因为短信的广播是有序广播,那么谁最先收到广播,谁就可以有权利结束广播的传递,所以我们实际上在做的时候是要想办法把我们接收广播的权限提到最高,这里主要是两个方法,1是设置权限值最大,2是注册方式设置为动态注册的。

设置权限最大,其实就是把注册广播时的优先级设置最大,其中Android系统api中说明最大权限是1000,而在实际上接收的是一个int值,而且系统没有判断值的上线,所以我们可以设置int的最大值,这个权限是最高的。
那么如果都是最大权限了,谁的优先级高呢,那么就是第二点,动态注册监听,因为在源码中动态注册的广播是在静态广播之前放入监听列表中的,所以我们这里用动态注册来设置监听。
那如果大家也都用动态注册的方式了,谁先收到呢,这个地方好像又跟应用的包名有关系,具体我也没有搞太明白,大概意思是安装时间越早,优先级越高,包名在系统中的别名顺序越靠前,优先级越高(不是我们写的包名的字母排序)。
那么我们来看一下具体实现,首先是建一个service,然后保证这个service一直在后台运行(可以用守护进程,监听开机广播等等方式保证一直存在),然后在service的onStartCommand和onDestroy方法中分别注册广播和取消注册。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网