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