Определить состояние звонка для конкретной сим-карты

У меня есть следующий 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 симкарты и игнорировать вторую.


Ответы (0 шт):