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