今天接到一个之前的功能,现在要拿出来看一看能不能用。打电话接到挂断,在网上搜了半天,自己的代码看了半天也就两种。

第一种
try {Method method = Class.forName("android.os.ServiceManager").getMethod("getService", String.class);IBinder binder = (IBinder) method.invoke(null, new Object[]{Context.TELEPHONY_SERVICE});ITelephony telephony = ITelephony.Stub.asInterface(binder);telephony.endCall();
} catch (NoSuchMethodException e) {Log.d("", "", e);
} catch (ClassNotFoundException e) {Log.d("", "", e);
} catch (Exception e) {
}

另一种使用TelePhonyManager去挂断

TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);Class tmClazz = tm.getClass();Method getITelephonyMethod = null;
try {getITelephonyMethod = tmClazz.getDeclaredMethod("getITelephony", null);getITelephonyMethod.setAccessible(true);ITelephony iTelephony = (ITelephony) getITelephonyMethod.invoke(tm, null);iTelephony.endCall();
} catch (NoSuchMethodException e) {e.printStackTrace();
} catch (IllegalAccessException e) {e.printStackTrace();
} catch (RemoteException e) {e.printStackTrace();
} catch (InvocationTargetException e) {e.printStackTrace();
}

然后第一种不好使,报错

java.lang.NoSuchMethodError: No interface method endCall()Z in class Lcom/android/internal/telephony/ITelephony

看了半天是Aidl还有Framework啥的错误,改了一波也没整好,放弃了。

使用第二种,由与我是在一个工具类里写的TelephonyManager,当他.class的时候会报一个空指针的错误。在Acivity里使用时候完美运行,但是没有效果。

然后两种方法,都尝试过后不好使,研究了一上午发现了一个新的方式

TelecomManager tm = (TelecomManager) Context.getSystemService(Context.TELECOM_SERVICE);
if(tm != null){tm.endCall();
}

完美挂掉。权限9.0添加一下:

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

Android高版本无法挂断电话问题相关推荐

  1. Android自动接听和挂断电话实现原理

    转自:http://bbs.51cto.com/thread-1078059-1.html 一  前言 这两天要研究类似白名单黑名单以及手势自动接听的一些功能,所以呢,自然而然的涉及到怎么自动接听/挂 ...

  2. Android 5.1 Phone 挂断电话流程分析

    写在前面的话 本文主要分析Android挂断电话的流程,研究的代码是Android 5.1的,以CDMA为例,GSM同理. 挂断电话主要分两种情况: 本地主动挂断电话 \color{red}{本地主动 ...

  3. android挂断电话广播,android实现接通和挂断电话

    android实现接通和挂断电话 发布时间:2020-08-21 01:52:02 来源:脚本之家 阅读:230 作者:WillenWu 本文实例为大家分享了android实现接通和挂断电话的具体代码 ...

  4. 挂断电话的实现(即类似于电话号码黑名单)

    在文章的开头先列出以下需要注意的地方: 1.需要用到的权限如下: <uses-permission android:name="android.permission.READ_PHON ...

  5. Android挂断电话流程

    近期在友盟上看到许多关于挂断电话导致崩溃的问题,如下异常 java.lang.NoSuchMethodError: No interface method endCall()Z in class Lc ...

  6. Android挂断电话以及Java Class Loader

    Android中,要自己实现一个挂断电话方法时,很久之前可以endCall().不过现在已经不行了,要应用反射机制,获取到 "android.os.ServiceManager" ...

  7. Android通过AIDL实现接听电话、挂断电话操作 | 拨打电话

    Android中拨打电话功能是很轻松的只需要几行代码即可,如下: 首先还是得加上权限这个东西(或者动态申请) <!--拨打电话--> <uses-permission android ...

  8. android 实现挂断电话【四种方式】,亲测可用

    网上查到两种挂断电话方式 第一种:通过反射得到隐藏的API,需要aidl文件,但是这种方式测试后,无效.方法写出来吧,也许对你有你有帮助. 首先在main文件下创建报名com.android.inte ...

  9. android 自动拨打电话和挂断电话(反射和intent方式)

    欢迎来到博主的技术分享博客 今天分享的技术主要内容是自动拨打电话和挂断电话.自动拨打电话分为两种,一种是通过反射ITelephony这个类直接调用call方法,一种是通过intent方法.而挂断电话则 ...

最新文章

  1. 苹果手机数据转移到新手机_买了新手机,数据迁移用它轻松搞定
  2. 独家 | 一文盘点AutoML 库(附PPT等链接)
  3. Vue学习小札——2.6 组件参数校验与非props特性
  4. java方法体逻辑不会写怎么办,想自己写框架?不会写Java注解可不行
  5. WHERE WILL BUSINESS PHD GO?
  6. 好东西仿Vista窗体
  7. Spring MVC静态资源实例
  8. UART协议概述与实现
  9. 如何下载一个屏幕画笔软件pointofix
  10. backupexec linux oracle,自动恢复 - 详解通过Backup Exec来实施Oracle灾难恢复_数据库技术_Linux公社-Linux系统门户网站...
  11. linux 消息队列实现通信
  12. mysql5.464位下载_MySQL Front 64位
  13. js实现回到顶部,以及回到指点div顶部
  14. 三星S5660刷机及Root
  15. 树的遍历顺序 - dfs序|欧拉序|dfn序(备忘)
  16. ios 纯代码怎么适配ipad_iOS屏幕适配(纯代码)
  17. 光交删zone注意事项
  18. Ubuntu ISO定制
  19. 基于node.js + ElementUI 的sass人力资源后台管理系统的实现
  20. dhcp snooping华为_华为交换机DHCP snooping

热门文章

  1. VueX里的mapGetters
  2. 微信小程序动画(七):让页面动起来
  3. 洛谷题目按难度点评---入门难度
  4. python学习——设置pandas plot为副坐标轴
  5. 电脑开机时的硬盘自检要怎么关闭
  6. i58250u是低端处理器吗_i58250u是低端处理器吗
  7. 解决ecshop退出登录会清空购物车的bug优化最完美方法
  8. python界面设计实例qt_python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例...
  9. 搜源网 (一个国内非常优秀的源代码搜索引擎)
  10. 8G+256G固态,2020新款笔记本,吃鸡贼爽!