安卓端黑名单拦截电话

需求:

当点击拦截按钮时会开启拦截服务,当点解取消拦截时则会关闭拦截服务

在xml文件中编写两个BUtton按钮,并设置其监听事件

在mainActivity中处理监听事件分别开启服务和关闭服务

public void start (View v) {startService(new Intent(this, BlackService.class));}public void end (View  v) {stopService(new Intent(this,BlackService.class));}

需要创建一个service(注意在xml文件进行配置)

package shangguigu.java.endcall;import java.lang.reflect.Method;import com.android.internal.telephony.ITelephony;import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.Log;public class BlackService extends Service {private TelephonyManager tm;private PhoneStateListener listener = new PhoneStateListener() {// 当通话状态发生改变时调用public void onCallStateChanged(int state, String incomingNumber) {switch (state) {case TelephonyManager.CALL_STATE_IDLE:// 空闲 (挂断电话/未来电之前)Log.e("TAG", "空闲 (挂断电话/未来电之前)");break;case TelephonyManager.CALL_STATE_RINGING:// 响铃Log.e("TAG", "响铃");// 如果来电电话是黑名单号(110), 就挂断电话if ("15738517961".equals(incomingNumber)) {try {endCall();} catch (Exception e) {e.printStackTrace();}}break;case TelephonyManager.CALL_STATE_OFFHOOK:// 接通Log.e("TAG", "接通");break;default:break;}}};@Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubreturn null;}/*** 挂断电话* @throws Exception*/private void endCall() throws Exception {// 通过反射调用隐藏的API// 得到隐藏类的Class对象Class c = Class.forName("android.os.ServiceManager");// 得到方法所对应的Method对象Method method = c.getMethod("getService", String.class);// 调用方法IBinder iBinder = (IBinder) method.invoke(null,Context.TELEPHONY_SERVICE);// 得到接口对象ITelephony telephony = ITelephony.Stub.asInterface(iBinder);// 结束通话telephony.endCall();}@Overridepublic void onCreate() {super.onCreate();Log.e("TAG", "Service onCreate()");// 得到电话管理器tm = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);// 监听电话状态tm.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);}@Overridepublic void onDestroy() {super.onDestroy();Log.e("TAG", "Service onDestroy()");// 停止电话监听tm.listen(listener, PhoneStateListener.LISTEN_NONE);}}

在挂断电话的方法里需要使用系统的ITelephony。aidl文件ITelephony.aidl文件的包名需要与服务器的包名一致,android studio需要运行aidl文件

最后需要在xml里加权限

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

安卓端黑名单拦截电话相关推荐

  1. Android6.0 源码添加黑名单拦截电话和短信记录

    [目标] 在上一篇 Android6.0 源码增加黑名单功能 的基础上增加黑名单和短信拦截记录 [实现] 黑名单数据库和拦截记录数据库上一篇已经增加完成,这就需要我们在电话和短信分发的地方去判断号码是 ...

  2. 手机黑名单,拦截电话和短信,清除通话记录

    首先对功能简单分析一下,既然是黑名单功能,那么肯定是写在服务里面,需要一直在后台运行着. 一.拦截短信 短信在接收的时候,广播发送,监听广播接受者,拦截短信(有序广播) 将广播的优先级级别提高到最高 ...

  3. Android端来电拦截的模块实现

    安卓手机来电拦截模块 电话拦截这项功能google屏蔽了,所有得自己去找aidl文件来反射实现来电的拦截,下面是一个简单的来电拦截模块代码实现. ❶需要注意的是:所需要的权限 <!-- 权限 - ...

  4. 安卓端身份证识别与云端服务器识别

    安卓端的身份证识别已经不能满足实际的需求,和云端服务器挂接的方法应运而生,以往广泛应用方式为pc端的二代证读卡机具,但是单纯的二代证读卡方式已经不能应用到移动端的设备上,即使使用起来比较笨重,不像电话 ...

  5. 淘东电商项目(68) -互联网安全架构设计(黑名单拦截及MD5加签)

    引言 本文代码已提交至Github(版本号:d439ec96b39dc0adf0d697cbc6bfc87c1c3b7dc8),有兴趣的同学可以下载来看看:https://github.com/ylw ...

  6. 129.s1-拦截黑名单的电话,Android Studio使用aidl

    拦截电话需要权限 <uses-permission android:name="android.permission.CALL_PHONE"></uses-per ...

  7. 安卓端微信H5下载文件处理:让微信自动弹起跳转外部浏览器窗口

    配套视频:https://www.bilibili.com/video/BV1oA411B7gv/ 背景 今天鼓捣了一下手机投屏到笔记本,就想录个视频展示一下学习成果,正好就想起了很早之前实现的这个功 ...

  8. 5.5 短信黑名单拦截

    1.在黑名单服务中, 动态代码创建短信广播接受者, 在服务开启时注册短信拦截广播意图过滤器, 在服务销毁时取消广播事件 2. 在广播接受者内部类中,判断来电号码是否在黑名单短信拦截和全部拦截模式中, ...

  9. 5.4 来电黑名单拦截 ,删除呼叫记录

    1. 创建黑名单服务 2.在服务中创建TelephoneyManager,并给电话管理者设置来电监听事件 3.在实现监听事件未实现的方法中,switch电话管理者的状态 ,在电话处于来电状态时判断来电 ...

  10. pc 电脑web浏览器js通过usb控制安卓手机打电话挂电话(补充效果录像图)

    pc 电脑web浏览器js通过usb控制安卓手机打电话挂电话 经过几年的沉淀,我们已经将整个这个需求背景的架构与解决方案进行了高级的研发,将在下一个文档中进行概述. 电脑通过网页通过控制usb的安卓手 ...

最新文章

  1. 一线城市中高端人才月薪超 2 万,电子通信行业应届生薪资涨幅最高
  2. ajax请求提示html状态码302,快速解决ajax请求出错状态码为0的问题
  3. 送30块树莓派PICO 开发板!
  4. 「译」 用 Blazor WebAssembly 实现微前端
  5. 一壶 100℃ 的开水从多高倒进嘴里不会觉得烫?
  6. python新手入门总结_初学python的操作难点总结(新手必看篇)
  7. WAV文件格式终极解析
  8. python 3.7.732位安装步骤_Python3.7.0安装教程
  9. php mysql工单_详解使用PHP开发客服工单系统
  10. OpenERP 关于页码总页数
  11. KendoUI 基础:Grid 绑定template展示
  12. 怎么定义int_「C语言更新」C语言中如何来定义一个指针,并且对其进行初始化...
  13. [Extjs6]随记 store本地过滤数据显示
  14. navicat win32注册机下载 | 绿色版
  15. HeartBeat的一些介绍和功能上的一些总结
  16. 淘宝下架苹果iOS充值业务,马云或在为支付宝扫除障碍
  17. 信息学奥林匹克竞赛-编程语言
  18. 关于 /dev/urandom 的流言终结
  19. 指针,指针变量,指针变量指向的一些理解
  20. 直播美颜技术大揭秘!

热门文章

  1. android自定义pickerview,一个非常好用的Android PickerView库
  2. 群晖NAS教程(十二)、利用Web Station安装Chevereto图床
  3. IC工程师简历制作全解读
  4. 在Arcgis中利用Python编写脚本批量化处理数据实例
  5. ../bin/testCurveFitting 出现的错误以及解决办法
  6. 使用ThinkPHP扩展,实现Redis的CURD操作。
  7. oracle10rac asm hpux,oracle 10g rac asm上面的控制文件损坏既增加方法
  8. Java程序员必备的一些流程图/架构图(拿走不谢)
  9. 阿里云Flink SQL开发指南——字符串函数——REGEXP_REPLACE正则替换
  10. linux64位版本 小米球内网穿透后台启动 centos8 安装 screen 报错:No match for argument: screen