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

非Expo环境下React Native项目配置react-native-health-connect求助

解决React Native集成react-native-health-connect无法获取步数的问题
  • 核对原生权限配置
    Expo会自动处理部分安卓原生配置,但纯RN项目得手动添加:

    • 打开android/app/src/main/AndroidManifest.xml,补充权限和Activity声明:
      <uses-permission android:name="android.permission.health.READ_STEPS" />
      <uses-permission android:name="android.permission.health.WRITE_STEPS" />
      
      <application>
        <activity
          android:name="com.google.android.health.connect.HealthConnectDefaultActivity"
          android:exported="true">
          <intent-filter>
            <action android:name="android.health.connect.action.OPEN_HEALTH_CONNECT_SETTINGS" />
          </intent-filter>
        </activity>
      </application>
      
    • 确认项目targetSdkVersion≥34,Health Connect要求安卓14及以上API级别。
  • 手动实现权限请求逻辑
    Expo封装了权限流程,纯RN项目需自行编写请求代码:

    import { HealthConnect } from 'react-native-health-connect';
    
    const requestStepPermissions = async () => {
      const permissionGranted = await HealthConnect.requestPermissions([
        { accessType: 'read', recordType: 'Steps' },
      ]);
      if (!permissionGranted) {
        throw new Error('步数读取权限未授予');
      }
    };
    

    必须先调用该方法获取权限,再执行步数查询。

  • 检查Health Connect服务可用性
    纯RN项目要先确认设备上的Health Connect服务正常运行:

    const checkHealthConnectStatus = async () => {
      const isAvailable = await HealthConnect.isAvailable();
      if (!isAvailable) {
        await HealthConnect.installHealthConnect();
      }
    };
    

    未安装Health Connect应用的话,无法获取任何健康数据。

  • 校验步数查询的参数格式
    确保查询的时间范围和格式正确,避免因参数错误导致无数据返回:

    const fetchDailySteps = async () => {
      const yesterday = new Date(Date.now() - 24 * 60 * 60 * 1000);
      const today = new Date();
      const stepsData = await HealthConnect.getRecords('Steps', {
        startTime: yesterday.toISOString(),
        endTime: today.toISOString(),
      });
      const totalSteps = stepsData.reduce((sum, record) => sum + record.count, 0);
      console.log('今日步数:', totalSteps);
    };
    

    时间格式必须为ISO字符串,时间范围也不宜过大。

  • 清理缓存重新构建项目
    原生配置修改后,缓存可能导致配置不生效:

    • 执行命令:cd android && ./gradlew clean && cd ..
    • 重新运行项目:npx react-native run-android

内容的提问来源于stack exchange,提问作者Pawan Kumar Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 19:42:34