当前位置: 首页 > 知识库问答 >
问题:

无法使用react native Bluetoothel

白萧迟
2023-03-14

我已经在我的应用程序中添加了react-native-ble-plx。我还使用react native link CMD链接了它。我已经完成了lib文件中提供的所有必要步骤。但它不起作用。我从来没有请求用户的许可,它给了错误Deivce没有被授权使用Bluetootle。这是我的代码

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
 package="com.smartdeviceiot">
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>
   <uses-permission android:name="android.permission.INTERNET" />
   <uses-permission android:name="android.permission.BLUETOOTH"/>
   <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
   <uses-permission-sdk-23 android:name="android.permission.ACCESS_COARSE_LOCATION"/>
   <uses-sdk
                 android:minSdkVersion="18"
                 android:targetSdkVersion="23"/> 

deviceSearch.js

从“../constants/colors”导入颜色;从“../constants/images”导入图像;从“Native-Base”导入{按钮、图标、文本、容器、页眉、左侧、正文、标题、右侧};从“./styles/home”导入{HomeStyle};从“react-native-ble-plx”类导入{BleManager}DevicesSearch扩展组件{static navigationOptions={title:“DevicesSearch”};const manager=new BleManager();this.state={};}componentWillMount(){}render(){return(>this.props.navigation.navigate(“drawerOpen”)}>DevicesSearch搜索设备);}scanAndConnect=()=>{alert(“asd”)console.log(“cal”);

      if (error) {
        this.error(error.message);
        return
      }

      if (device.name ==='MyDevice') {
        this.info("Connecting to Tappy");
        this.manager.stopDeviceScan();

        device.connect()
          .then((device) => {
            this.info("Discovering services and characteristics");
            return device.discoverAllServicesAndCharacteristics()
          })
          .then((device) => {
            this.info(device.id);
            device.writeCharacteristicWithResponseForService('12ab', '34cd',

'AGVSBG8GBWLZCYB0YXBWEQ==')。then((特性)=>{this.info(特性.值);return})。catch((错误)=>{this.error(错误.消息)})}});}}函数mapStateToProps(状态){//传递提供程序返回{}}/*将操作映射到道具*/函数mapDispatchToProps(调度)>{return{Actions:bindActionCreators({},调度)};}导出默认连接(mapStateToProps,mapDispatchToProps)(DevicesSearch);

如果我的蓝牙是关闭的代码控制台。记录我的蓝牙是关闭的,但当它在它上,记录我的设备没有使用蓝牙的身份验证。我也很想使用AndroidPermission库,但没有成功。它不需要用户的权限

共有1个答案

冀鸿才
2023-03-14

您需要显式地向用户请求该权限。我也遇到了同样的问题,我通过在一个单独的文件中添加以下代码来解决它:

export async function requestLocationPermission() {
  try {
    const granted = await PermissionsAndroid.request(
      PermissionsAndroid.PERMISSIONS.ACCESS_COARSE_LOCATION, {
        title: 'Location permission for bluetooth scanning',
        message: 'wahtever',
        buttonNeutral: 'Ask Me Later',
        buttonNegative: 'Cancel',
        buttonPositive: 'OK',
      },
    ); 
    if (granted === PermissionsAndroid.RESULTS.GRANTED) {
      console.log('Location permission for bluetooth scanning granted');
      return true;
    } else {
      console.log('Location permission for bluetooth scanning revoked');
      return false;
    }
  } catch (err) {
    console.warn(err);
    return false;
  }
}

然后当我需要扫描时,在实际扫描代码之前,我做以下操作:

  scanAndConnect() {
    const permission = requestLocationPermission();
    if (permission) {        
      ...here I scan because the user has given permission
 类似资料:
  • 我正在写一份GCM申请。我无法将收到的邮件设置为文本视图。 检查以下代码: (错误msg: findViewById(int)方法未定义为new Runnable(){})

  • 我刚刚开始使用Spring,我正在尝试使用@NotBlank。问题是它不起作用。pom.xml我有以下依赖项: 这是我的进口: 我也得到了这个错误: 我搜索了类似的问题,答案是,通过添加此依赖项并重新启动IDE将起作用。就我而言,它仍然不起作用。有什么建议吗?

  • 当我尝试此代码时 我收到这条信息: 警告:无法修改标头信息-标头已由/home/httpd/vhosts/your-click.ch/httpdocs/wp-includes/formatting.php:4179中的/home/httpd/vhost/your-click.ch/httpdocs/wp-includess/pluggable发送。第925行的php警告:无法修改标头信息-标头已由

  • 我正在做一个项目,我试图加载一个图像,以便将其用作纹理,但当我尝试包含stb_image时遇到了一个问题。 我把< code>stb_image.h放在< code > src/vendor/STB _ image/中,用 在文件中,并将文件放在<code>src/vendor/stb_image/</code>目录中。当我尝试包含<code>#include“vendor/stb_image/s

  • 看来我无法导入这个包:github。com/golang/protobuf/proto 当我尝试构建或使用go-get时,我得到:无法加载github。com/golang/protobuf/proto:github模块。com/golang/protobuf@latest(v1.3.2)找到,但不包含包github。com/golang/protobuf/proto 这是一个受欢迎的软件包,我很

  • 我基本上使用了install命令“$pip install Flask”,当我试图运行一个程序时,它会说“找不到模块”Flask安装在“/usr/local/lib/python2.7/site包”中,但我认为pip的意义在于,我可以到处导入这些包。我试图在我的桌面上运行一个文件,甚至当我将Flask文件夹移动到桌面上时,它也不起作用。有什么建议吗?谢谢

  • 我正在尝试使相机应用程序存储输出到我的内部存储。我还知道第三方应用程序不能访问我的应用程序的内部存储,但我们可以通过公开内部目录来做到这一点。我在这里遵循了指南: 相机意图不保存照片 https://developer.android.com/reference/android/support/v4/content/fileprovider.html 当我运行应用程序时,我可以得到以下Logcat

  • 实现“com.android.support:support-v13:28.0.0” 实现“com.android.support:design:28.0.0” 实现“com.android.support:recyclerview-v7:28.0.0”