Android-9種通話狀態(精確)


一.介紹
在應用層監聽通話狀態只有三種,從TelephonyManager.java中注釋可知這三種狀態含義如下:
    CALL_STATE_IDLE 空閑態(沒有通話活動)[j8>02190A03096E00190E7E02190A03096E00190E]
    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 <system, radio, events, main>     main   — 主日志緩沖區(默認,普通app應用)     radio  — 無線/電話相關日志緩沖區        events — 事件相關日志緩沖區     system — 系統相關日志緩沖區


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM