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

React Native使用PermissionsAndroid申请Android定位权限返回null求助

定位权限报错修复方案

核心错误点修复

你代码中存在权限常量拼写错误,是触发permission is null的直接原因:
将 PermissionsAndroid.PERMISSIONS.ACCESS_FINA_LOCATION 修正为 PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,原拼写少写了字母E,导致系统无法识别对应权限枚举值。

其他配套修正项

1. 修正权限申请参数写法

PermissionsAndroid.request的第二个参数直接传权限说明对象即可,不需要加rationale =前缀,修正后的申请代码如下:

const granted = await PermissionsAndroid.request(
  PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
  {
    title: "App location Permission",
    message: "App needs access to your location so you can take awesome rides.",
    buttonNeutral: "Ask Me Later",
    buttonNegative: "Cancel",
    buttonPositive: "OK"
  }
);

2. 检查AndroidManifest权限声明

打开android/app/src/main/AndroidManifest.xml文件,确认已添加定位权限声明:

<!-- 基础定位权限 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 若targetSdkVersion >=31且应用需要后台定位,新增以下权限 -->
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />

3. 可选:规范useEffect写法

你当前useEffect里的create=、inputs=属于冗余赋值,不影响功能但不符合语法规范,可调整为标准写法:

useEffect(() => {
  if(Platform.OS ==='android'){
    androidPermission();
  }else{
    Geolocation.requestAuthorization();
  }
}, [])

生效验证

所有修改完成后,重新编译打包安装到模拟器,不要直接使用热更新重载,即可正常触发权限申请流程。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 15:18:03