Google Fit选择账号后卡在加载状态,添加血压读取权限后同意页无限加载
问题根因
- 依赖版本不兼容:你当前使用的
play-services-fitness:20.0.0和play-services-auth:19.2.0版本不匹配,高版本Fit SDK对血压读取这类敏感健康数据的权限申请逻辑做了升级,旧版auth SDK无法适配新的同意页加载流程,就会出现无限加载的情况。 - 权限配置不规范:同数据类型的读写权限分两次添加,可能导致SDK校验权限时出现逻辑冲突;此外如果没有在AndroidManifest中补全对应系统级健康权限、Google Cloud控制台OAuth范围配置有遗漏,也会触发该问题。
- 本地账号缓存异常:之前未完成全部授权的账号信息缓存在本地,调用权限申请接口时传入了过期的账号状态,也会导致同意页加载失败。
- 测试账号未纳入白名单:如果应用还处于测试状态,未加入OAuth测试用户列表的账号申请敏感权限时也会出现加载异常。
修复步骤
- 升级匹配版本的依赖,建议升级到官方稳定适配的版本组合:
googleImplementation "com.google.android.gms:play-services-fitness:21.2.0" googleImplementation "com.google.android.gms:play-services-auth:20.7.0"
- 优化FitnessOptions权限配置,合并同数据类型的权限申请:
val fitnessOptions = FitnessOptions.builder() .accessActivitySessions(FitnessOptions.ACCESS_READ or FitnessOptions.ACCESS_WRITE) //其他健身活动相关权限 .addDataType(HealthDataTypes.TYPE_BLOOD_PRESSURE, FitnessOptions.ACCESS_READ or FitnessOptions.ACCESS_WRITE) .build()
- 补全AndroidManifest.xml中的权限声明,根据你适配的安卓系统版本添加对应权限:
<!-- Google Fit基础权限 --> <uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION" /> <!-- 安卓14及以上血压读写权限 --> <uses-permission android:name="android.permission.health.READ_BLOOD_PRESSURE" /> <uses-permission android:name="android.permission.health.WRITE_BLOOD_PRESSURE" /> <!-- 安卓13及以下身体传感器权限 --> <uses-permission android:name="android.permission.BODY_SENSORS" android:maxSdkVersion="32" />
- 核对Google Cloud控制台配置:进入OAuth同意屏幕配置页,确认
https://www.googleapis.com/auth/fitness.blood_pressure.read和https://www.googleapis.com/auth/fitness.blood_pressure.write两个范围均已添加,且状态为已验证通过。如果应用处于测试阶段,确认当前测试账号已加入测试用户列表。 - 测试前先清除应用本地缓存,或者在触发权限申请前先调用GoogleSignInClient的signOut方法清除旧的账号授权缓存,再重新发起登录和权限申请流程。
内容的提问来源于stack exchange,提问作者Arefeh Iravanchi
相关产品推荐
相关产品推荐

