关于获取手机通话状态获取方式,请参考其他文档,此文不做介绍。

1.非ROOT手机

反射方法

通过AIDL和放射的方式实现电话挂断,是网上使用最多的方法。

首先我们需要创建一个aidl文件,包路径为:com.android.internal.telephony;

文件的内容如下:

实现挂断的代码如下:

存在问题:

部分手机移动联通正常使用,电信手机无法挂断,反射方法也无异常抛出

辅助功能(无障碍)

辅助功能就不做介绍

请记得提前开启辅助功能

辅助功能实现挂断电话的操作如下几种:

1.通过打开通话界面“挂断”按钮

2.通过打开任务栏,点击通话选项中的“挂断”字样实现挂断

此方案需要根据不同手机实现做不同的适配。

辅助功能的实现,这里不做太多的介绍。

获取通话挂断按键id的方法

  1. 先找到monitor.bat文件,AS在对应sdk路径如下(实在找不到,下载“Everything”去搜索):
  2. 打开monitor.bat文件,进入如下界面,判断手机是否正常连接
  3. 让手机处于通话状态(ps:测试过程可以通过打运营客服,免费),点击红色圈圈里面的按钮
  4. 通过按键的id(com.android.incallui:id/endButton)获取到AccessibilityNodeInfo,然后调用点击方法

2.ROOT手机

root手机拥有更多的权限可以执行“su”命令

执行su命令的框架可以参考github上面有个Superuser

主要实现挂断电话方式

1.模拟耳机媒体按键实现电话挂断(input keyevent 79)

2.部分手机可以使用service获取通话服务(service call phone code

code的获取方法(接听code将“endcall”换成“answer”):

3.模拟屏幕点击

由于root可以根据屏幕坐标点位置进行点击,长按,拖拽等操作

很多界面是不能通过辅助功能t获取到控件信息

此时就需要通过屏幕点击命令执行操作(input tap X Y)X,Y分别表示当前控件在屏幕中的位置

获取屏幕控件坐标的方法,“开发者选项”打开“指针位置”(不同手机功能名不同),如下

如图,直接调用命令执行(input tap 544 1934)实现点击挂断。

辅助功能和屏幕点击方式只有在其他方式都无法满足需求的时候才考虑

因为它的弊端很明显:

1.每个手机都需要做不同的适配

2.操作比较麻烦,实现流程繁琐

3.不少手机会出现自动关闭辅助功能

4.不可控因素太多,人工手动息屏、切换界面或者系统弹窗会影响界面监听和点击

5.监听的软件版本升级,对应的AccessibilityNodeInfo也会改变,需要重新适配

Android手机实现自动挂断功能相关推荐

  1. android 挂断 电话 反射,Android实现来电自动挂断实现机制

    通过aidl及反射实现挂断电话 具体分三步: (1)ITelephony.aidl ,必须新建com.Android.internal.telephony包并放入ITelephony.aidl文件(构 ...

  2. java代码设置手机来电黑名单自动挂断

    今天讲的是电话的黑名单自动挂断的功能,所以现在跟着我的步骤来吧! 一.首先切换到project区间去,在main的文件夹里面创一个aidl文件夹,把官网中下的两个文件夹cope到这个aidl文件夹里面 ...

  3. android 自动挂断,[转]android 来电自动接听和自动挂断

    注意:android2.3版本不支持下面的自动接听方法.(会抛异常:java.lang.SecurityException: Neither user xxxxx nor current proces ...

  4. android 自动挂断,android实现接通和挂断电话

    本文实例为大家分享了android实现接通和挂断电话的具体代码,供大家参考,具体内容如下 关键代码:[PhoneUtils类] package com.ebupt.phonerecorddemo.se ...

  5. android 自己写挂电话,MTK Android 如何自动挂断电话

    //拨打电话,并定时60S对方未接听自动挂断 public voidCall() { Uri localUri = Uri.parse("tel:" + mPhoneNumber[ ...

  6. android 自动挂断,android 来电自动接听和自动挂断(2.3以上)

    转自http://stephen830.iteye.com/blog/1181786java android 来电自动接听和自动挂断android 注意:android2.3版本不支持下面的自动接听方 ...

  7. Service-黑名单来电自动挂断

    这只是一个学习例程,很多功能有待完善 允许用户动态加载手机通讯录中的电话号码,勾选某些号码作为黑名单,一旦将某些号码设为黑名单,当该号码自动挂断该号码 Android没有对外公开挂断电话的API,如果 ...

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

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

  9. Android手机的12项额外功能

    Android手机的12项额外功能 手机能做服务器 苹果.微软和谷歌三大平台厂商对待手机操作系统的态度完全不同,iOS和Windows Phone以安全为由限制用户和开发者接触系统核心,让用户丧失了很 ...

最新文章

  1. 计算机出国读博必读!外国小哥创建最全CS奖学金项目清单
  2. XenMobile 8.7对iOS7.1 企业级MDM管理功能带来哪些扩展?
  3. 一句话反弹shell
  4. Spring学习笔记之一----基于XML的Spring IOC配置
  5. uva 11174(排列组合+搜索)
  6. 乘基取整法是什么_数字逻辑电路-学习指南
  7. Qt工作笔记-使用QpropertyAnimation实现控件上下滑动的效果
  8. 《SOA中国路线图》下载
  9. Android大环境杂谈待续中
  10. woe分析_WOE和IV
  11. 学生信息管理系统_C语言实现_单链表
  12. 霹雳吧啦Wz语义分割学习笔记P7
  13. How to delete files beginning with -- in Linux
  14. c++ sprintf()详解
  15. Java移位运算符详解实例——左移位运算符、带符号的右移位运算符
  16. 如何从JavaScript中的数组替换元素?
  17. python学习第一课
  18. 传奇服务器充值系统,传奇服务端会员系统COM引擎传奇增加会员系统的方法
  19. Dock 栏美化壁纸,深+浅模式 ! 支持全部机型~,太可爱了!
  20. 在Mac电脑上更新打印机软件?

热门文章

  1. python博弈树_博弈树alpha-beta剪枝搜索的五子棋AI
  2. 等了那么久,终于等到新游戏啦!大炮英雄Cocos Creator实现,关注获取代码!
  3. matlab 7. 回归预测实例
  4. 【FFprobe】直接读取TS文件 的stream信息
  5. 生态模式下的林业栽培管理技术探析
  6. 抖音python广告用的什么音乐_抖音上超好听的神曲音乐,Python教你一次性下载
  7. 关于Zotero的主要插件功能说明
  8. Android自定义View来实现解析lrc歌词并同步滚动、上下拖动、缩放歌词的功能[转]
  9. Scrapy爬取京东商城华为全系列手机评论
  10. threejs 知识点