添加自定义CallSettings致Voximplant场景抛出UnsupportedOperationException问题排查
Voximplant场景代码抛出UnsupportedOperationException的原因分析
问题根源
你用mapOf()创建了只读Map并赋值给CallSettings.extraHeaders,但Voximplant SDK内部需要对这个headers集合执行修改操作(比如添加默认头),而只读Map不支持修改,直接触发了UnsupportedOperationException。
Kotlin里mapOf()生成的是不可变的只读Map实例,一旦创建就不能添加、删除或修改键值对,而CallSettings.extraHeaders要求的是可变Map类型。
修复方案
方案1:直接创建可变Map
val callSettings = CallSettings() val array = mutableMapOf("X-PARAMCUSTOM" to "test") callSettings.extraHeaders = array
方案2:将只读Map转为可变Map
val callSettings = CallSettings() val array = mapOf("X-PARAMCUSTOM" to "test").toMutableMap() callSettings.extraHeaders = array
额外提示
你提供的callUser代码中,e.headers大概率也是只读结构,如果后续SDK需要修改它,同样可能触发异常,建议转为可修改的对象后再传入:
VoxEngine.addEventListener(AppEvents.CallAlerting, (e) => { var newCall = VoxEngine.callUser( e.destination, e.callerid, e.displayName, null, Object.assign({}, e.headers) // 转为可修改的普通对象 ); });
内容的提问来源于stack exchange,提问作者jedi1150
相关产品推荐
相关产品推荐

