Agora音视频通话无法使用,报Access denied finding property错误如何解决?
问题原因
这个报错出现在Android 10(API 29)及以上版本的设备上,系统限制了普通应用读取net.dns1~net.dns4系统属性的权限,低于3.7.0版本的Agora Android SDK默认会尝试读取这些属性获取DNS配置,权限被拦截后就会抛出对应日志,严重时会导致SDK网络初始化失败,无法正常发起音视频通话。
排查步骤
- 先确认你集成的Agora Android SDK版本号,在build.gradle依赖或者集成的jar/aar文件名中可以查到版本信息
- 确认测试设备的Android系统版本,是否为Android 10及以上
- 临时关闭应用的网络权限后重新启动,确认是否还会抛出同样报错,排除其他自定义DNS逻辑冲突的可能
解决方案
方案一:升级Agora SDK
直接升级Agora Android SDK到3.7.0及以上的正式版本,这个版本之后Agora官方已经修复了读取系统DNS属性的逻辑,不会再触发该权限报错,是成本最低的解决方案。
方案二:适配老版本SDK
如果因为业务逻辑兼容问题无法升级SDK,可以做如下适配:
- 在
AndroidManifest.xml中添加以下权限配置,提升应用读取系统网络配置的权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
- 初始化Agora SDK之前,手动配置自定义DNS,避免SDK尝试读取系统DNS属性:
调用setParameters方法传入自定义DNS配置,示例代码如下:
rtcEngine.setParameters("{\"rtc.dns_server_override\":[\"8.8.8.8\",\"114.114.114.114\"]}");
配置的DNS服务器地址可根据你的业务实际情况调整。
方案三:过滤非致命报错
如果以上方案都不适用,且你确认这个报错只是打印日志,没有实际影响音视频通话的正常流程,可以直接过滤该类日志,不需要做额外代码修改。
内容的提问来源于stack exchange,提问作者Jaltesh Ghevariya
相关产品推荐
相关产品推荐

