Отображение звонков в списке в приложении для Android - PullRequest
0 голосов
/ 30 сентября 2019

Я пытаюсь разработать приложение для 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)
    }
  }
}

Ответы [ 2 ]

0 голосов
/ 30 сентября 2019

Вы на правильном пути. Вы должны использовать интеллектуальную реализацию BroadcastReceiver, чтобы получить представление о том, что происходит на стороне состояния телефона ... Некоторые классы уже существуют, взгляните на эту суть , которая может помочь вам достичь того, чего вы хотите!

0 голосов
/ 30 сентября 2019

вы можете удалить повторяющиеся записи, используя hashmap, поэтому предыдущая запись перезаписывает новую запись

...