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

React Native集成react-native-ble-manager在Android13设备崩溃,Android11正常

问题:Android 13设备运行BLEManager.scan时应用崩溃,Android 11无此问题

运行BLEManager.scan方法时,搭载Android 13系统的Pixel 6设备上应用直接崩溃,但在Android 11设备上可正常运行。

当前已在AndroidManifest.xml中配置以下权限:

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION " />
<uses-permission-sdk-23 android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>

应用中原本执行的运行时权限请求代码仅针对定位权限:

PermissionsAndroid.request(
  PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
)

解决方案

Android 12及以上系统对BLE操作新增了单独的权限要求,必须在运行时主动请求BLUETOOTH_SCAN和BLUETOOTH_CONNECT权限。

问题根源在于使用的react-native及@types/react-native版本过旧,未包含这两个新权限的定义。将react-native版本升级至0.67及以上后,即可在代码中引用这两个权限。

修改后的运行时权限请求代码如下:

import { PermissionsAndroid } from "react-native"

await PermissionsAndroid.requestMultiple([
     PermissionsAndroid.PERMISSIONS.BLUETOOTH_SCAN,
     PermissionsAndroid.PERMISSIONS.BLUETOOTH_CONNECT,
     PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 07:25:18