Android ITelephony EndCall Remove 各版本挂断、拦截电话方法

Android 各版本挂断电话方法演进及最佳实践

本文首发地址:https://h89.cn/archives/13.html

一、背景介绍

Android系统中挂断电话的方法随着版本的演进发生了多次变化。本文将详细介绍从Android 8.0到最新版本的实现方法,以及各个版本的兼容性处理方案。

二、Android 10之前的实现方式

2.1 源码分析

在Android 8.0和9.0中,ITelephony.aidl提供了endCall()接口:

而在Android 10源码中,已经移除了endCall()接口。

2.2 实现代码

// Android 10之前的实现方式
public void endCall() {
   
   
    try {
   
   
        // 1. 通过类加载器加载相应类
        Class<?> loadClass = getClassLoader().loadClass("android.os.ServiceManager");
        
        // 2. 获取getService方法
        Method method = loadClass.getDeclaredMethod("getService", String.class);
        
        // 3. 执行方法获取IBinder对象
        IBinder invoke = (IBinder) method.invoke(null, Context.TELEPHONY_SERVICE);
        
        // 4. 转换为ITeleph
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清霜辰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值