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

React Native接入Google Fit已配置XML权限仍提示申请Activity Recognition权限

解决方法

  1. 补充动态申请Activity Recognition运行时权限
    Android 10(API 29)及以上系统中,android.permission.ACTIVITY_RECOGNITION 属于高危运行时权限,仅在AndroidManifest.xml中声明无效,必须在调用Google Fit相关能力前主动向用户申请授权。
    你可以使用react-native-permissions库完成权限申请,你已配置的两个ACTIVITY_RECOGNITION权限保留即可,分别适配Android 9及以下和Android 10及以上版本,调整后的逻辑示例:
import { check, request, PERMISSIONS, RESULTS } from 'react-native-permissions';

// 权限检查逻辑
const checkActivityPermission = async () => {
  const result = await check(PERMISSIONS.ANDROID.ACTIVITY_RECOGNITION);
  if (result === RESULTS.GRANTED) return true;
  const requestResult = await request(PERMISSIONS.ANDROID.ACTIVITY_RECOGNITION);
  return requestResult === RESULTS.GRANTED;
}

// 调整原有useEffect逻辑
useEffect(() => {
  const initGoogleFit = async () => {
    const hasPermission = await checkActivityPermission();
    if (!hasPermission) {
      alert('需要运动健身权限才能记录步数');
      return;
    }
    const options = {
      scopes: [
        Scopes.FITNESS_ACTIVITY_READ,
        Scopes.FITNESS_ACTIVITY_WRITE,
        Scopes.FITNESS_BODY_READ,
        Scopes.FITNESS_BODY_WRITE,
      ],
    };
    GoogleFit.authorize(options)
      .then(authResult => {
        if (authResult.success) {
          // 调用startRecording时指定要记录的数据类型
          GoogleFit.startRecording(() => {}, GoogleFit.DATA_TYPES.STEP_COUNT);
        } else {
          alert('AUTH_DENIED', authResult.message);
        }
      })
      .catch(() => {
        alert('AUTH_ERROR');
      });
  }
  initGoogleFit();
}, []);
  1. 修正startRecording调用参数
    react-native-google-fit的startRecording方法需要传入第二个参数指定要记录的数据类型,你之前仅传了回调函数未指定数据类型,可能会触发默认的全类型记录逻辑,额外请求不需要的权限。如果只需要步数追踪,指定GoogleFit.DATA_TYPES.STEP_COUNT即可。

  2. 适配版本兼容
    如果上述操作后仍有问题,可以尝试调整依赖版本:

  • 升级play-services-fitness到21.0.0及以上版本,和其他play服务依赖版本保持一致,避免版本冲突
  • 升级react-native-google-fit到0.18.0及以上稳定版,该版本开始已适配Android 10+的权限逻辑
  1. 排查真机环境
    部分国产Android 10机型会对Google服务权限做额外限制,可手动到系统设置-应用管理-你的应用-权限管理中,查看「身体活动」权限是否已开启,同时确保设备已安装并登录Google Fit app,且Google服务框架运行正常。

内容的提问来源于stack exchange,提问作者dash

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 02:57:03