【问题标题】:Android Bluetooth Low Energy: characteristic.getPermissions() returns 0?Android 低功耗蓝牙:characteristic.getPermissions() 返回 0?
【发布时间】:2014-05-15 09:45:15
【问题描述】:

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

这是一个代码sn-p

    // 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

我做错了吗?是否有特定的方法来获取特性的权限或者这是 android api 的问题?

我正在使用 API 19 并在三星 Galaxy Note 3 上测试我的程序。

感谢您的帮助。

【问题讨论】:

  • 你是如何设置 MITM 权限的。另外,我对配对过程以及如果未配对如何获得回调也不是很清楚......有什么建议吗?
  • 权限不是从android设备设置的,而是从我正在使用的BLE硬件设备设置的

标签: java android bluetooth bluetooth-lowenergy android-bluetooth


【解决方案1】:

这看起来像是底层框架的问题。 This link 显示了框架在发现远程设备上的服务/特征时执行的代码块。可以看到当新的BluetoothGattCharacteristic创建时,permissions参数总是作为0传入的。

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

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

【讨论】:

  • 这个很有见地。我们看到了完全相同的问题,但由于某种原因,当我们向其写入值时,永远不会触发 onCharacteristicChange 回调。有什么建议吗?
  • 不幸的是,这表明该属性毫无意义。
猜你喜欢
  • 1970-01-01
  • 2021-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-14
  • 2016-06-14
  • 1970-01-01
相关资源
最近更新 更多