首页 > 解决方案 > 在android应用程序的列表中显示调用

问题描述

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

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

标签: androidandroid-broadcast

解决方案


您可以使用 hashmap 删除重复条目,以便以前的条目覆盖新条目


推荐阅读