Android蓝牙低功耗:characteristic.getPermissions()返回0?

Kik*_*iki 7 java android bluetooth bluetooth-lowenergy android-bluetooth

我正在编写一个Android BLE应用程序,我正在尝试获得某个特性的权限.我已经设法使用characteristic.getProperties()获取特性属性,并返回非零值,但是,当我使用getPermission()方法时,它返回0,即使我确定该特性具有PERMISSION_WRITE_ENCRYPTED_MITM(0x00000040) ).

这是一段代码片段

    // properties
    int properties = ch.getProperties();
    DebugWrapper.infoMsg("properties: " + properties, TAG); //returns non-zero value

    // permissions      
    int permissions = ch.getPermissions();  
    DebugWrapper.infoMsg("permissions: " + permissions, TAG); //returns zero value
Run Code Online (Sandbox Code Playgroud)

难道我做错了什么?有没有特定的方法来获得特性的权限或这是Android api的问题?

我正在使用API​​ 19并在Samsung Galaxy Note 3上测试我的程序.

我感谢任何帮助.

Dev*_*red 8

这看起来像底层框架的问题. 此链接显示框架在发现远程设备上的服务/特征时执行的代码块.您可以看到BluetoothGattCharacteristic创建新的时间,权限参数始终作为传入0.

此外,即使稍后读取特征,仅更新特征值,也不会在对象上重置其他参数.

相反,似乎Android尝试在试错的基础上处理身份验证/权限问题.换句话说,框架总是尝试基本的读/写,如果由于验证原因而失败,它会自动再次尝试请求MITM身份验证.

  • 不幸的是,这表明该财产毫无意义。 (2认同)