rn androin 蓝牙权限 蓝牙开启
依赖 : react-native-ble-manager 库为数不多的还在更新的第三方库 权限配置出现各种权限报错经过最终修改跟官方略有不同,修改AndroinManifest文件后可能依然会提示权限问题,可能是百编译问题需要重启项目重编译代码,
yarn add react-native-ble-manager
权限配置 androin/app/src/main/AndroinManifest.xml 中添加
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.rn">
<uses-permission android:name="android.permission.BLUETOOTH" tools:remove="android:maxSdkVersion" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" tools:remove="android:maxSdkVersion" />
<!-- <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" android:maxSdkVersion="29"/>
<uses-permission-sdk-23 android:name="android.permission.ACCESS_FINE_LOCATION" android:maxSdkVersion="29"/> -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN"
android:usesPermissionFlags="neverForLocation" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
</manifest>
配置成功就可在组件中引用 以下是引用代码
import { NativeModules,NativeEventEmitter,NativeAppEventEmitter, PermissionsAndroid, } from "react-native"
import BleManager from 'react-native-ble-manager';
const BleManagerModule = NativeModules.BleManager;
const bleManagerEmitter = new NativeEventEmitter(BleManagerModule);
方法调用蓝牙初始化
BleManager.start({showAlert: false})
// 初始化成功后检查蓝牙状态
.then(() => {})
bleManagerEmitter.addListener('BleManagerDidUpdateState', (args) => {
console.log('蓝牙状态:', args);
// 蓝牙已打开
if(args.state == 'on' ) {
}
});
搜索蓝牙设备
BleManager.scan([], 30, true).then(() => {
// Success code
console.log("Scan started");
}).catch(error => {
console.log('搜索失败', error);
});;
//开启蓝牙
const checkStatest = async ()=>{
BleManager.enableBluetooth()
.then(() => {
// Success code
console.log("The bluetooth is already enabled or the user confirm");
})
.catch((error) => {
// Failure code
console.log(error);
console.log("The user refuse to enable bluetooth");
});
}