android监听来电
‘壹’ Android 9 来电监听incomingNumber为空
限制访问电话号码
在未首先获得 READ_CALL_LOG 权限的情况下,除了应用的用例需要的其他权限之外,运行于 Android 9 上的应用无法读取电话号码或手机状态。
与来电和去电关联的电话号码可在手机状态广播(比如来电和去电的手机状态广播)中看到,并可通过 PhoneStateListener 类访问。 但是,如果没有 READ_CALL_LOG 权限,则 PHONE_STATE_CHANGED 广播和 PhoneStateListener 提供的电话号码字段为空。
要从手机状态中读取电话号码,请根据您的用例更新应用以请求必要的权限:
要通过 PHONE_STATE Intent 操作读取电话号码,同时需要 READ_CALL_LOG 权限和 READ_PHONE_STATE 权限。
要从 onCallStateChanged() 中读取电话号码,只需要 READ_CALL_LOG 权限。 不需要 READ_PHONE_STATE 权限。
‘贰’ android 9.0 获取去电时对方接通的真实状态(监听通话过程状态)
场景:app是完全接管了系统的拨号及通话页面,因此很多状态无法获取,就比如去电时判断对方是否真实接通还是处于对方振铃状态。
在应用层监听通话状态只有三种,从TelephonyManager.java中注释可知这三种状态含义如下:
CALL_STATE_IDLE :空闲态(没有通话活动)
CALL_STATE_RINGING :包括响铃、第三方来电等待
CALL_STATE_OFFHOOK 摘机(接听):包括dialing拨号中、active接通、hold挂起等
监听通话状态:
参考文章:
https://blog.csdn.net/qq_32115439/article/details/78395537