Android/React Native 在一部手机上使用 react-native-ble-manager 崩溃,但在其他手机上不会崩溃

问题描述 投票:0回答:0

所以我遇到了一个问题,我的应用程序在一部手机(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,
)
android react-native bluetooth react-native-ble-manager
© www.soinside.com 2019 - 2024. All rights reserved.