get call state for multisim phone

35 views Asked by At

I have BroadcastReceiver for ACTION_PHONE_STATE with code

    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)
            }
        }

I need get the state only for subID 1, but I get callback from every call on any sim.(I try set it by hand for test)) Maybe I incorrectly understand the logic of PhoneStateLIstener? I need fully ignore info about sim with subID2

0

There are 0 answers