Определить состояние звонка для конкретной сим-карты
У меня есть следующий BroadcastReceiver для ACTION_PHONE_STATE
override fun onReceive(context: Context, intent: Intent) {
var number: String?
number = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER)
intent.extras
if (number != null) {
val phoneListener = MyPhoneStateListener(context, number)
val telephonyManager =
context.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
val mSim0TelephonyManager = telephonyManager.createForSubscriptionId(1)
mSim0TelephonyManager!!.listen(
phoneListener, PhoneStateListener.LISTEN_CALL_STATE
)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
mSim0TelephonyManager.registerTelephonyCallback(context.mainExecutor,
object : TelephonyCallback(), TelephonyCallback.CallStateListener {
override fun onCallStateChanged(state: Int) {
println("CALL_BACK_STATE: " + state + " " + number)
}
})
} else {
mSim0TelephonyManager.listen(phoneListener , PhoneStateListener.LISTEN_CALL_STATE)
}
}
Я хочу получать состояние только для subId 1, но я получаю callback всегда. Даже если звонок поступает симкарту с subId 2, то я все равно получаю состояние на первой сим-карте.
Возможно я некорректно понимаю логику работы PhoneStateLIstener? Мне необходимо получать только изменение состояния 1 симкарты и игнорировать вторую.