gpt4 book ai didi

android - TelephonyManager 在 android 12 上弃用了 listen() CALL_STATE_RINGING

转载 作者:行者123 更新时间:2023-12-04 23:39:33 85 4
gpt4 key购买 nike

我想听听当我的应用程序在前台时是否有电话。
以前是这样的,但现在不推荐使用 listen() :

val tm = context.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
tm.listen(object : PhoneStateListener() {
override fun onCallStateChanged(state: Int, phoneNumber: String?) {
super.onCallStateChanged(state, phoneNumber)
when (state) {
TelephonyManager.CALL_STATE_RINGING -> transcribingAudioConsumer.stopTranscription(null)
else -> {}
}
}
}, PhoneStateListener.LISTEN_CALL_STATE)
我尝试过这样的事情,但我找不到正确的方法来实现它。
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
tm.registerTelephonyCallback({ it.run() }, MyPhoneStateListener())
}
  @RequiresApi(Build.VERSION_CODES.S)
class MyPhoneStateListener : TelephonyCallback(), TelephonyCallback.CallStateListener {
override fun onCallStateChanged(state: Int) {
when (state) {
TelephonyManager.CALL_STATE_RINGING -> {
Timber.e("omg RING")
}

TelephonyManager.CALL_STATE_OFFHOOK -> {
Timber.e("omg hook")
}
TelephonyManager.CALL_STATE_IDLE -> {
Timber.e("omg idle")
}
}
}
}

最佳答案

由于自 api 31 android 12 以来不推荐使用 listen 方法,因此我采用了一种简单的方法来收听电话回调。

val telephonyManager: TelephonyManager =
context.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
telephonyManager.registerTelephonyCallback(
context.mainExecutor,
object : TelephonyCallback(), TelephonyCallback.CallStateListener {
override fun onCallStateChanged(state: Int) {
}
})
} else {
telephonyManager.listen(object : PhoneStateListener() {
override fun onCallStateChanged(state: Int, phoneNumber: String?) {
}
}, PhoneStateListener.LISTEN_CALL_STATE)
}
请注意,新回拨不包括电话号码。
至少对于广播接收器,可以通过以下方式检索电话号码
intent.extras.getString("incoming_number")

关于android - TelephonyManager 在 android 12 上弃用了 listen() CALL_STATE_RINGING,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69571012/

85 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com