Nearby Connections API在Android12上出现8037、8038未知错误无法广播发现设备
问题根因
你遇到的8037、8038错误码是Android 12系统上Google Play服务Nearby模块的未公开内部错误码,对应P2P策略下的发现、广播操作被底层服务主动拦截,该问题由2022年年中Google Play服务的灰度更新触发,仅影响搭载Android 12的Pixel系列设备,和你应用本身的代码逻辑无关,所以官方示例应用也会出现相同报错。
修复方案
- 第一步:升级项目依赖的Nearby Connections SDK版本到18.0.0及以上,在build.gradle中修改依赖配置:
dependencies { implementation 'com.google.android.gms:play-services-nearby:18.2.0' }
- 第二步:补充Android 12新增的权限声明,在AndroidManifest.xml中添加以下权限:
<!-- Android 12蓝牙扫描、广播权限 --> <uses-permission android:name="android.permission.BLUETOOTH_SCAN" /> <uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" /> <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" /> <!-- Android 12 Wifi直连相关权限 --> <uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES" android:usesPermissionFlags="neverForLocation" /> <!-- 兼容Android 11及更低版本的位置权限要求 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:maxSdkVersion="32" />
- 第三步:运行时主动申请上述所有危险权限,确认用户全部授权后再调用
startDiscovery()、startAdvertising()接口。 - 如果上述操作完成后仍然报错,可以引导用户将设备上的Google Play服务升级到最新版本,该问题已经在Play服务22.50.x及以上版本中完成修复,不需要回退Android系统版本。
内容的提问来源于stack exchange,提问作者adek111
相关产品推荐
相关产品推荐

