安卓学习笔记之骚扰拦截


1、监听电话状态
2、检测来电号码是否匹配拦截条件
3、若匹配,则挂断电话

实例代码:

获取TelephonyManager 对象,并监听来电状态

TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
MPhoneStateListener  listener = new MPhoneStateListener();
tm.listen(listener,  PhoneStateListener.LISTEN_CALL_STATE);

MPhoneStateListener电话状态监听类

    class MPhoneStateListener extends PhoneStateListener {@Overridepublic void onCallStateChanged(int state, String incomingNumber) {super.onCallStateChanged(state, incomingNumber);switch (state) {case TelephonyManager.CALL_STATE_RINGING:if (db.isNumberExist(incomingNumber)) {String mode = db.getMode(incomingNumber);if (mode.equals(MODE_PHONE_TEXT) | mode.equals(MODE_ONLY_PHONE)) {//挂断电话endCall();Uri uri = Uri.parse("content://call_log/calls");getContentResolver().registerContentObserver(uri , true,new MContentObserver(new Handler(),incomingNumber));}};break;}}}       
class MContentObserver extends ContentObserver{private String  inCompingNumber;/*** @param handler* @param inCompingNumber*/public MContentObserver(Handler handler, String inCompingNumber) {super(handler);this.inCompingNumber = inCompingNumber;}//当数据改变时,调用此方法@Overridepublic void onChange(boolean selfChange) {super.onChange(selfChange);deleteCallLog(inCompingNumber);getContentResolver().unregisterContentObserver(this);}
    /*** 删除来电号码记录* @param inCompingNumber * */private void deleteCallLog(String inCompingNumber) {Uri  uri = Uri.parse("content://call_logs/call");getContentResolver().delete(uri, "number=?", new String[]{inCompingNumber});}
/*** 挂断电话*/private void endCall() {try {//通过类加载器拿到ServiceManagerClass<?> classs = getClassLoader().loadClass("android.os.ServiceManager");// 通过反射拿到当前方法getServiceMethod method = classs.getDeclaredMethod("getService", String.class);// getService的返回值为IBinder对象 即TelephonyManagerIBinder binder = (IBinder) method.invoke(null, TELEPHONY_SERVICE);ITelephony iTelephony = ITelephony.Stub.asInterface(binder);// 挂断电话iTelephony.endCall();} catch (ClassNotFoundException e) {e.printStackTrace();} catch (NoSuchMethodException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (IllegalArgumentException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();} catch (RemoteException e) {e.printStackTrace();}}

需要权限

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>

还要添加两个aidl文件

安卓学习笔记之骚扰拦截相关推荐

  1. 2020年安卓学习笔记目录

    文章目录 一.讲课笔记 二.安卓案例 三.安卓实训项目 四.学生安卓学习博客 五.安卓课后作业 (一)界面设计练习 1.制作登录界面 2.制作部队管理界面 3.制作灭火救援界面 4.制作交付界面 5. ...

  2. 安卓学习笔记07:事件处理、窗口跳转与传递数据

    文章目录 零.学习目标 一.三个基本控件 1.标签控件(TextView) 2.编辑框控件(EditText) 3.按钮控件(Button) 二.安卓事件处理机制 (一)安卓事件处理概述 (二)安卓事 ...

  3. 很low的安卓学习笔记(一、实用技巧)

    很low的安卓学习笔记(一.实用技巧) 一.学习了几天的实用技巧小总结: 1.规范的定义内容的格式: 2.一些快捷键 3.将xxx.xml布局改为Activity中可以调用的View视图 4.当左下角 ...

  4. 安卓学习笔记3——登录界面UI

    安卓学习笔记3--登录界面UI 一.登录界面UI 1.根据需求写UI 2.主活动 3.主活动调用的读写文件的工具类 4.效果展示 二.总结与改进 不足: 1.密码分割采用字符串:当密码和用户名包含该字 ...

  5. Vue学习笔记:axios 拦截器的用法

    Vue学习笔记:axios 拦截器的用法 什么是axios 拦截器? 拦截器就是拦截每一次的请求和响应,然后进行相应的处理.请求拦截器,它可以统一在你发送请求前在请求体里加上token:响应拦截器,是 ...

  6. 安卓学习笔记(一)入门篇

    总结<第一行代码>Android学习笔记(一)入门篇 1.入门 Android的四层架构和四大组件 运行第一个Android程序 日志工具Log AndroidStudio快捷键 GIT的 ...

  7. 安卓学习笔记---Activity

    由于学期实训的要求,我开始学习安卓了.从本月一号开始,学了五天了.时间短,刚学到的东西容易忘,我记一下笔记. 首先是对Activity的理解.activity首先是一个java类,我们创建一个新的ac ...

  8. 安卓学习笔记44:开源框架okhttp3入门

    文章目录 零.学习目标 一.okhttp3框架概述 二.案例演示 - 利用okhttp3下载网页 (一)运行效果 (二)涉及知识点 (三)实现步骤 1.创建安卓应用[DownloadWebPageBy ...

  9. 安卓学习笔记43:初试开源框架Volley

    文章目录 零.学习目标 一.Volley概述 (一)安卓HTTP网络编程两种方式 (二)简化HTTP通信,推出Volley框架 二.案例演示 - 利用Volley下载网页 (一)运行效果 (二)涉及知 ...

最新文章

  1. Android LocalBroadcastManager 的使用总结
  2. python word
  3. 7.深度学习练习:Regularization
  4. 我的webpack配置文件
  5. 使用sklearn优雅地进行数据挖掘
  6. 蓝桥杯 ADV-166算法提高 聪明的美食家
  7. python的下划线
  8. 使用adb命令启动app
  9. 解决Intellij IDEA中找不到汉化包问题
  10. Win10 LTSC 2021安装及相关bug解决
  11. 优启通安装linux系统,利用U盘启动盘优启通(pe)安装centos到旧笔记本上
  12. 计算机中冰点还原快捷键,冰点还原软件如何使用,教您如何使用冰点还原软件...
  13. 云原生不可变基础设施
  14. 计算机工资表2017,2017事业单位工资标准表
  15. 购房攻略—买楼返折扣、返佣金、返京东购物卡、物业费套路
  16. [插件发布] KK_XSHOW首页多格(Discuz) DX2.0 首款支持x2的首页N格焦点图!
  17. easypoi 语法_高中语法精讲系列七丨高中英语八大语法之“名词性从句”要点归纳...
  18. 快速创建树 算法 treeCreate treeview
  19. cf手游3月22日最全更新内容:恐怖博物馆、凤凰武器、血月模式上线
  20. 2013 即将上映电影

热门文章

  1. google浏览器谷歌搜索引擎怎么设置单击在新标签页打开页面
  2. 幼儿园老师计算机培训,幼儿园教师计算机培训计划方案
  3. 十步杀一人、Activity前世今生
  4. appium连接夜游模拟器失败的解决办法,即在dos命令中输入adb devices查不到设备的解决办法(只针对夜游模拟器)
  5. 文件夹图标后缀名变成.ink的解决办法
  6. 投资超2800亿元北京“3个100”重点工程开工率创新高
  7. 我用Python破了扫雷的最快世界纪录。你能打破吗?
  8. 深圳市地方税务局数据复制软件采购
  9. 新的开始 ,新的结束
  10. 【经典卷积神经网络CNN模型 之 VGG16Net】模型实验,强烈建议使用GPU来跑,经试验,若使用CPU,普通PC理论上需要超过100小时