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

第一种
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. 圆环划痕检测halcon
  3. python wheel使用_【转载】Python,使用Wheel打包
  4. Nginx 配置 SSL 及 HTTPS 协议通信过程
  5. 【原创翻译】生动详细解释javascript的冒泡和捕获,包懂包会
  6. python爬虫中文乱码_Python爬虫处理抓取数据中文乱码问题
  7. 封装动态数组类Array
  8. devc运行不出窗口_足不出户“云出庭”?沾化“智慧检务”让法律监督“不打烊...
  9. The .NET Core runtime can be found at:(Windows)
  10. 一位 90 后程序员的自述:如何从年薪 3W 到 30W
  11. poj 3190(贪心)
  12. 网管必读-常用网络命令
  13. 软件测试——测试用例设计方法
  14. 进销存源码|ERP多仓库管理系统全开源php源码
  15. Origin 2017去除水印的方法
  16. coreldraw x4如何出血_CorelDRAW X4常用快捷键大全,详细始末
  17. SATA 与 PCIe
  18. 高通apq8096连接外网
  19. 指数分布具有“无记忆性”
  20. html 93c,对93c46编程

热门文章

  1. Windows10下的C盘扩容问题,亲测可用
  2. matlab2014 图标,Ubuntu14.04 Matlab 2014b启动器(使用matlab自带图标)
  3. 心中的感慨,当前的社会太现实了
  4. 学习笔记 JavaScript ES6 箭头函数
  5. webview传参给Android,webview 向Android传参
  6. Win32学习笔记(四)窗口的创建
  7. SATA Mode:Optane without Raid导致lsblk检测不到磁盘
  8. 元移动平台助力广东农信试水互联网+业务创新
  9. 魔兽世界 - PKU[课程作业]程序设计与算法(三)C++面向对象程序设计/coursera C++程序设计_World of warcraft Project
  10. Android MediaPlayer 中Context的传递