android - 在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)
}
}
}
解决方案
您可以使用 hashmap 删除重复条目,以便以前的条目覆盖新条目
推荐阅读
- mysql - 无法浏览 phpMyAdmin 表:错误 #1038 - 排序内存不足,请考虑增加服务器排序缓冲区大小
- angular - 通过路径上的状态传递的角度视图数据
- c++ - 如何删除 C++ 中类的所有隐式(默认)方法?
- java - 在 Java 中读取 .txt 文件
- java - 更改日志记录级别以从使用索引参数的查询中打印实际值
- r - geom_rect 给出没有矩形的空图
- kotlin - 使用 Gson 反序列化后计算的瞬态值为空
- jenkins - 在 Jenkins 作业中列出 RPM
- apache-spark - 在 PySpark 中有效地合并两个或多个数据帧/rdd
- ios - 自动完成不适用于桥接到 Swift 的 Objective-C 函数