所以我遇到了一个问题,我的应用程序在一部手机(Pixel 6 Android 13)上崩溃,但在运行时不是 Android 11 手机
BLEManager.scan
.
以下是正在使用的权限:
<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版本问题,但不确定,因为这在文档中没有指定。
答案:
我需要在 Android 12 之后的运行时请求这些权限。我遇到了问题,因为我的 react-native/@types/react-native 版本已经过时并且不包含
BLUETOOTH_SCAN
和 BLUETOOTH_CONNECT
权限。我将版本升级到 [email protected]
,然后可以在运行时请求这些权限。
import { PermissionsAndroid } from "react-native"
await PermissionsAndroid.requestMultiple([
PermissionsAndroid.PERMISSIONS.BLUETOOTH_SCAN,
PermissionsAndroid.PERMISSIONS.BLUETOOTH_CONNECT,
PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
])
之前我只是要求
PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
)