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

如何使用Expo向Android申请Activity Recognition权限?

如何在Expo React Native应用中申请Activity Recognition权限?

你当前的配置和代码无法触发权限弹窗,问题出在Expo环境下需要使用专属的权限处理方案,而非直接调用React Native的PermissionsAndroid。以下是可行的解决步骤:

1. 安装Expo Activity Recognition依赖

Expo提供了专门处理活动识别权限的库,先完成安装:

npx expo install expo-activity-recognition

2. 修正app.json配置

无需重复添加两个权限声明,在app.json的expo.permissions数组中保留"ACTIVITY_RECOGNITION"即可,Expo会自动根据Android版本适配对应的权限:

{
  "expo": {
    "permissions": [
      "ACTIVITY_RECOGNITION"
    ]
  }
}

3. 使用Expo库申请权限

替换原有的PermissionsAndroid代码,改用expo-activity-recognition提供的方法触发权限弹窗:

import * as ActivityRecognition from 'expo-activity-recognition';

async function requestActivityRecognitionPermission() {
  try {
    const { status } = await ActivityRecognition.requestPermissionsAsync();
    if (status === 'granted') {
      console.log('权限已授予');
    } else {
      console.log('权限被拒绝');
    }
  } catch (err) {
    console.warn(err);
  }
}

// 可在组件挂载等合适时机调用该方法
// useEffect(() => {
//   requestActivityRecognitionPermission();
// }, []);

针对Bare Workflow(已 eject 的项目)

如果你的项目是Bare Workflow,除了上述步骤,还需要手动在android/app/src/main/AndroidManifest.xml中添加权限声明:

<!-- Android 10及以上 -->
<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" />
<!-- Android 9及以下兼容 -->
<uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION" />

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 05:30:47