我正在编写一个Android BLE应用程序,并且试图获得某个特性的权限。我已经设法通过character.getProperties()获取特征属性,并且它返回非零值,但是,即使我确定特征具有PERMISSION_WRITE_ENCRYPTED_MITM(0x00000040,当我使用getPermission()方法时,它也会返回0。 )。
这是一个代码片段
// 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并在Samsung Galaxy Note 3上测试程序。
感谢您的帮助。
这看起来像是基础框架的问题。 此链接显示了在远程设备上发现服务/特性时框架执行的代码块。您可以看到BluetoothGattCharacteristic创建新内容时,权限参数始终以形式传入0。
BluetoothGattCharacteristic
0
此外,即使稍后读取特性,也仅更新特性的值,而不会在对象上重置其他参数。
取而代之的是,Android似乎尝试基于反复试验来处理身份验证/权限问题。换句话说,该框架始终尝试进行基本的读/写操作,并且如果由于身份验证原因而失败,则会自动使用请求的MITM身份验证再次尝试。