在android应用程序中在列表中显示呼叫

在android应用程序中在列表中显示呼叫,android,android-broadcast,Android,Android Broadcast,我正在尝试开发一个android应用程序,可以在列表中显示调用。我用过广播接收机。默认情况下,每次传入呼叫都会多次发送电话状态更改广播。结果,我在列表中得到了一个数字的重复条目。我只想为每个通话输入一个条目。据我所知,我必须跟踪广播的状态变化,例如,如果前一个状态为空闲,而新状态为振铃,则仅向列表中添加一项。但我不能这样做。有人能帮我吗?下面是显示数字列表的代码 class CallReceiver(var mainActivity: MainActivity): BroadcastRece

我正在尝试开发一个android应用程序,可以在列表中显示调用。我用过广播接收机。默认情况下,每次传入呼叫都会多次发送电话状态更改广播。结果,我在列表中得到了一个数字的重复条目。我只想为每个通话输入一个条目。据我所知,我必须跟踪广播的状态变化,例如,如果前一个状态为空闲,而新状态为振铃,则仅向列表中添加一项。但我不能这样做。有人能帮我吗?下面是显示数字列表的代码

  class CallReceiver(var mainActivity: MainActivity): BroadcastReceiver(){
     val TAG=CallReceiver::class.java.simpleName
     override fun onReceive(context: Context?,intent: Intent?){
     var action=intent?.action
     val prev:String
     val state:String


    Log.i(TAG,action)
    //intent?.hasExtra(TelephonyManager.EXTRA_STATE)
    if(intent!!.hasExtra(TelephonyManager.EXTRA_STATE))
    {

        state = intent?.getStringExtra(TelephonyManager.EXTRA_STATE)
        Log.i(TAG,"State is: $state")


    }
    if(intent!!.hasExtra((TelephonyManager.EXTRA_INCOMING_NUMBER))){
        val number = 
       intent?.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER)
        mainActivity.addPhoneNumberList(number)
    }
  }
}

您可以使用hashmap删除重复条目,这样以前的条目将覆盖新条目,您就走上了正确的道路。您应该使用BroadcastReceiver的智能实现来了解手机状态方面发生的事情… 有些课程已经存在,这可能会帮助你实现你想要的