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

React Native在Android 13无法获取WiFi信息,Android 12正常求助

Android 13下React Native无法获取WiFi SSID/BSSID的解决方案

问题原因

Android 13(API 33)对WiFi信息获取的权限机制做了调整:

  • 原有的ACCESS_FINE_LOCATION权限不再单独满足WiFi SSID/BSSID的获取需求
  • 新增NEARBY_WIFI_DEVICES权限,用于访问附近WiFi设备信息,需通过权限标志明确是否关联定位用途

解决方案

1. 更新AndroidManifest.xml权限配置

在android/app/src/main/AndroidManifest.xml中添加权限配置:

<!-- Android 13+ 访问WiFi设备信息所需权限,neverForLocation表示不关联定位 -->
<uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES" android:usesPermissionFlags="neverForLocation" />
<!-- 兼容Android 12及以下版本的权限 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

2. 升级依赖库到适配版本

确保WiFi相关依赖库已适配Android 13权限规则:

  • react-native-network-info升级至v6.0.0及以上
  • @react-native-community/netinfo升级至v9.3.0及以上

3. 动态权限申请(可选)

如果需要在运行时确认权限,可添加以下逻辑:

import { PermissionsAndroid, Platform } from 'react-native';
import { NetworkInfo } from 'react-native-network-info';

async function requestWifiPermissions() {
  if (Platform.Version >= 33) {
    const granted = await PermissionsAndroid.request(
      PermissionsAndroid.PERMISSIONS.NEARBY_WIFI_DEVICES,
      {
        title: "WiFi权限申请",
        message: "应用需要访问WiFi信息以正常运行",
        buttonNegative: "取消",
        buttonPositive: "允许"
      }
    );
    return granted === PermissionsAndroid.RESULTS.GRANTED;
  } else {
    const granted = await PermissionsAndroid.request(
      PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
      {
        title: "定位权限申请",
        message: "应用需要定位权限以获取WiFi信息",
        buttonNegative: "取消",
        buttonPositive: "允许"
      }
    );
    return granted === PermissionsAndroid.RESULTS.GRANTED;
  }
}

// 在获取WiFi信息前调用权限申请
requestWifiPermissions().then(granted => {
  if (granted) {
    NetworkInfo.getSSID().then(ssid => {
      setWifiSSID(ssid || '');
      console.log(ssid);
    });
  }
});

4. 验证效果

重新编译运行应用后,Android 13设备上:

  • SSID将返回真实名称,不再显示<unknown ssid>
  • BSSID将显示真实MAC地址,而非02:00:00:00:00:00

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 04:30:38