android判断进入通话状态,Android-9种通话状态(精确)

一.介绍

在应用层监听通话状态只有三种,从TelephonyManager.java中注释可知这三种状态含义如下:

CALL_STATE_IDLE 空闲态(没有通话活动)[j8>11131901166E070F0D7E11131901166E070F0D]

CALL_STATE_RINGING 包括响铃、第三方来电等待

CALL_STATE_OFFHOOK 包括dialing拨号中、active接通、hold挂起等

由上可知,active接通状态没有单独给出,所以我们无法得知电话是否接通了,

因此需要其它手段来获取更多的精确通话状态,遍查网络资料,一般有两种方法!

二.监听9种通话状态

法一.使用系统api监听

条件:

1.需要权限android.permission.READ_PRECISE_PHONE_STATE、app打包时需要系统签名、安装在系统目录等

2.onPreciseCallStateChanged 精确通话回调api在android.jar中被hide了, 可以使用反射或没有被hide的android.jar解决

法二.读取Logcat通信日志

条件: 1.android 4.1以上需要root权限,android 4.1以下版本只需添加日志权限android.permission.READ_LOGS 2.读取通信状态:在root状态下执行命令 logcat -v time -b radio

logcat日志被划分为以下几个缓冲区     -b     main   — 主日志缓冲区(默认,普通app应用)     radio  — 无线/电话相关日志缓冲区        events — 事件相关日志缓冲区     system — 系统相关日志缓冲区

原文:https://www.cnblogs.com/1818logs/p/11223719.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值