在Android 12及更高版本中,监听来电状态应使用registerPhoneStateCallback()方法。以下是一个示例代码段,用于在来电响铃时显示一个Toast消息:
val telephonyManager = getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
val phoneStateCallback = object : PhoneStateCallback() {
override fun onCallStateChanged(state: Int, phoneNumber: String?) {
super.onCallStateChanged(state, phoneNumber)
when (state) {
TelephonyManager.CALL_STATE_RINGING -> {
Toast.makeText(applicationContext, "Incoming call", Toast.LENGTH_SHORT).show()
}
}
}
}
telephonyManager.registerPhoneStateCallback(phoneStateCallback)
在此示例中,我们使用registerPhoneStateCallback()方法注册了一个PhoneStateCallback回调。当电话状态发生变化时,系统将调用onCallStateChanged()方法。在这个方法中,我们检查来电状态是否为CALL_STATE_RINGING,并在手机响铃时显示一个Toast消息。