1、在android 9上,實現監聽來電的時候,onCallStateChanged(int,String)無法獲取手機號碼。
原因:android 9時,系統對電話的權限做了修改,該修改對所有編譯版本的應用都有影響,因此無論應用的編譯版本是多少,在android 9以上的系統,都不能正常的獲取來電號碼。
https://developer.android.com/about/versions/pie/android-9.0-changes-all?hl=zh-cn
解決方案:
監聽來電的時候需要添加一下權限:
<uses-permission android:name="android.permission.READ_CALL_LOG"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
並且動態授予應用該權限即可。