来电拦截方案

最近接了很多垃圾电话,分享一下我的拦截方案。

首先我有一个主号,这是很多年前办的,银行、房贷等重要信息的电话,都是用的这个,不能换,但是由于办理时间长,很多垃圾电话和短信。 其次我有一个小号,所有的快递、外卖等电话,都是用这个小号。

最近由于同小区其它楼房开始交房,我的电话简直快要被装修广告打爆了,日常被打断工作,再加上平时的信用卡要我分期, 问我要不要贷款,运营商套路我是否要升级套餐,我决定要把它们干掉。市面上找了几个软件,但是效果都不是很好,比如放歌会被打断。 所以自己写一个。

经与同事论证,现在的手机电话号码,大都是广告骚扰,真正有用的联系:

  • 亲人,大部分都在微信,或者已经加了联系人
  • 外卖、快递。可以用一个小号,然后把小号加到联系人
  • 面试等有用的第三方,同样把电话填成小号即可,小号加到联系人

总之,真正重要的电话,肯定会再次联系,或者发短信,或者微信,或者其它方式联系,又或者,短时间内再打一次。

所以,根据上面的特征,就可以自己搞一个规则出来:

  • 在通讯录内,放行
  • 不在通讯录内:
    • 如果上次拨打是在15分钟以内,放行
    • 否则,拒绝

然后就是App的开发了,要有这些功能:

  • 上述处理逻辑
  • 启动Service
  • 几个设置开关以及对应逻辑,开关service,是否在拒接后显示一条静默通知
  • 导入联系人,处理各式各样的号码存储方式

差不多就这些。

这个软件实现后,我的世界安静了。不得不感叹一句,会编程真好 :)

垃圾短信解决方案

最后,再提一句垃圾短信的拦截方案,其实用不着那些什么AI啊之类的,直接加一堆关键字(关键字黑名单配合关键字白名单),基本上就拦截干净了。


2020.12.25 更新:

之前我理解错了,小号也是使用来电转接,而来电转接,API获取的是来电者的号码而不是小号的号码,Call.Details 也没有办法 判断是哪个SIM卡来的电话号码,所以只能统一实现不在通讯录内,就挂掉。不过,我加上了多少时间内二次来电,就放行的逻辑,所以 其实还好。另外,如果是跳槽等,知道将会有很多陌生人来电的情况下,就可以把软件关掉,把 “运行” 那里关掉即可。

截图如下:

Call Screening


更多文章
  • 任务队列怎么写?python rq源码阅读与分析
  • XMonad 配置教程
  • Haskell简明教程(三):Haskell语法
  • Haskell简明教程(二):从命令式语言进行抽象
  • Haskell简明教程(一):从递归说起
  • 2017年必装的VIM插件推荐
  • TCP/IP简明教程 - 从零构建TCP/IP协议(二)连接,断开与拥塞控制
  • TCP/IP简明教程 - 从零构建TCP/IP协议(这次叫PCT协议)
  • Lua Manual 阅读笔记
  • Golang Map 源码阅读与分析
  • MySQL 零碎知识 - MySQL必知必会
  • Golang slice 源码阅读与分析
  • 经典好书推荐(2017)
  • Golang log库 源码阅读与分析
  • 毕业后一年