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
相关产品推荐
相关产品推荐

