You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GMS 23.34.14环境下原生App无法调用Nearby.CONNECTIONS_API问题求助

问题概述

我们正在开发一款集成GMS Nearby CONNECTIONS_API的安卓应用,用于实现设备间近场互联。在GMS 23.34.14环境下,多款设备出现API无法获取的问题:

  • 应用内提示:17:API is not available on this device
  • 近场连接功能完全失效

涉事设备

  • Jetfon S20i(Android 9)
  • Lenovo M10 HD 2nd Gen(Android 10)
  • Lenovo Yoga11(Android 12)
  • Lenovo B10 HD 2nd Gen(Android 11)

设备日志

Failed to start discovery.

com.google.android.gms.common.api.ApiException: 17: API: Nearby.CONNECTIONS_API is not available on this device. Connection failed with: ConnectionResult{statusCode=INTERNAL_ERROR, resolution=null, message=null}

at com.google.android.gms.common.api.internal.zad.zad(com.google.android.gms:play-services-base@@18.0.1:1)
at com.google.android.gms.common.api.internal.zabq.zaE(com.google.android.gms:play-services-base@@18.0.1:7)
at com.google.android.gms.common.api.internal.zabq.zaD(com.google.android.gms:play-services-base@@18.0.1:2)
at com.google.android.gms.common.api.internal.zabq.zar(com.google.android.gms:play-services-base@@18.0.1:24)
at com.google.android.gms.common.api.internal.zabq.onConnectionFailed(com.google.android.gms:play-services-base@@18.0.1:1)
at com.google.android.gms.common.internal.zai.onConnectionFailed(com.google.android.gms:play-services-base@@18.0.1:1)
at com.google.android.gms.common.internal.zzf.zzb(com.google.android.gms:play-services-basement@@18.0.0:2)
at com.google.android.gms.common.internal.zza.zza(com.google.android.gms:play-services-basement@@18.0.0:3)
at com.google.android.gms.common.internal.zzc.zze(com.google.android.gms:play-services-basement@@18.0.0:3)
at com.google.android.gms.common.internal.zzb.handleMessage(com.google.android.gms:play-services-basement@@18.0.0:31)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:241)
at android.os.HandlerThread.run(HandlerThread.java:67)

问题原因分析
  1. GMS版本兼容性断层:GMS 23.34.14版本对Nearby CONNECTIONS_API的访问规则做了调整,部分非Google认证的第三方设备的系统GMS配置未适配该版本的校验逻辑,导致API被拒绝提供服务。
  2. 依赖库版本不匹配:应用依赖的play-services-base(18.0.1)、play-services-basement(18.0.0)属于较旧版本,无法兼容GMS 23.34.14的API调用协议,触发内部错误导致连接失败。
  3. 设备GMS认证缺失:涉事设备可能未通过Google Play官方认证,高版本GMS会限制未认证设备访问部分敏感API(如Nearby连接)。

解决方案
  1. 回退GMS版本验证:将设备的GMS核心服务降级到23.34.14之前的稳定版本(例如23.28.15),测试API是否恢复可用,确认问题是否由新版本GMS引入。
  2. 更新依赖库版本:升级应用中GMS相关依赖库到与23.34.14兼容的版本,修改build.gradle配置:
    dependencies {
        implementation 'com.google.android.gms:play-services-base:20.1.0'
        implementation 'com.google.android.gms:play-services-nearby:18.3.0'
    }
    
  3. 检查设备认证状态:进入设备设置>Google>服务>设备认证,确认设备已通过Play认证;未认证设备需联系厂商获取认证,或更换Google官方认证设备进行开发测试。
  4. 添加API可用性前置校验:在调用Nearby API前增加校验逻辑,提前处理不可用场景:
    GoogleApiAvailability apiAvailability = GoogleApiAvailability.getInstance();
    int resultCode = apiAvailability.isGooglePlayServicesAvailable(context);
    if (resultCode != ConnectionResult.SUCCESS) {
        // 提示用户修复GMS服务
        return;
    }
    // 校验Nearby API是否可用
    if (!Nearby.getConnectionsClient(context).apiAvailability().isAvailable()) {
        // 提示用户设备不支持该API
        return;
    }
    
  5. 确认权限配置:确保应用已申请并获取必要权限:
    • Android 9及以下:BLUETOOTH、BLUETOOTH_ADMIN、ACCESS_FINE_LOCATION
    • Android 10-11:额外添加ACCESS_BACKGROUND_LOCATION
    • Android 12+:BLUETOOTH_SCAN、BLUETOOTH_ADVERTISE、BLUETOOTH_CONNECT

内容的提问来源于stack exchange,提问作者大谷礼司

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 12:35:24