如何在超类型列表中添加两个 类,PhoneStateListener 和 AppCompatActivity

How to add two classes in supertype list, PhoneStateListener and AppCompatActivity

是否可以将 PhoneStateListener() 添加到 AppCompatActivity()?这个想法是创建一个类似于 class CallListener : AppCompatActivity(), PhoneStateListener() {} 的 Phone 调用监听器 class。此错误与“只有一个 class 可能出现在超类型列表中”。我需要 AppCompatActivity,因为我需要使用 AudioManager,而我知道如何做到这一点的唯一方法是使用 getSystemService(),如果没有 AppCompatActivity,这是不可用的。我还需要 PhoneStateListener 来了解出站调用处于哪个状态。在 Kotlin 中设置它的正确方法是什么?

您可以自定义嵌套 class 或扩展 PhoneStateListener.

的具体 class
class CallListener:PhoneStateListener(){
    override fun onCellInfoChanged(cellInfo: MutableList<CellInfo>?) {
        super.onCellInfoChanged(cellInfo)
    }
}

如果您需要访问其中的上下文,您可能需要将其传递给构造函数。但是如果你把它设为 inner class CallListener 你可以直接使用 Activity 的参考。 确保删除 onStoponDestroyPhoneStateListener 的所有资源。 内部 class 的排列看起来有点像下面 .

 class MyActivity:AppCompatActivity(){
    lateinit var  telephonyManager :TelephonyManager
    lateinit var callListener: CallListener
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        telephonyManager = getSystemService(TELEPHONY_SERVICE) as TelephonyManager
        callListener=CallListener()
        telephonyManager.listen(callListener),
    }

    inner class CallListener:PhoneStateListener(){
        override fun onCellInfoChanged(cellInfo: MutableList<CellInfo>?) {
            super.onCellInfoChanged(cellInfo)
        }
    }
}