android - 即使存在 WRITE 属性,也不允许 Android 写入 BLE
问题描述
我将BLE字符设置为读取、通知和写入:
char_props.broadcast = 0;
char_props.read = 1;
char_props.write_wo_resp = 0;
char_props.write = 1;
char_props.notify = 1;
char_props.indicate = 0;
char_props.auth_signed_wr = 0;
和:
BLE_GAP_CONN_SEC_MODE_SET_OPEN(&cccd_md.read_perm);
BLE_GAP_CONN_SEC_MODE_SET_OPEN(&cccd_md.write_perm);
cccd_md.vloc = BLE_GATTS_VLOC_STACK;
我从安卓查了角色的属性,是26,所以我认为是正确的。
I/System.out: mLockCharacteristic.getProperties(): 26
Android有以下定义:
public static final int PERMISSION_WRITE = 16;
public static final int PERMISSION_WRITE_ENCRYPTED = 32;
public static final int PERMISSION_WRITE_ENCRYPTED_MITM = 64;
public static final int PERMISSION_WRITE_SIGNED = 128;
public static final int PERMISSION_WRITE_SIGNED_MITM = 256;
public static final int PROPERTY_BROADCAST = 1;
public static final int PROPERTY_EXTENDED_PROPS = 128;
public static final int PROPERTY_INDICATE = 32;
public static final int PROPERTY_NOTIFY = 16;
public static final int PROPERTY_READ = 2;
public static final int PROPERTY_SIGNED_WRITE = 64;
public static final int PROPERTY_WRITE = 8;
但是当我写的时候,我得到了错误:
E/BleManager: onCharacteristicWrite error 3
public static final int GATT_WRITE_NOT_PERMITTED = 3;
有人有什么主意吗?
解决方案
推荐阅读
- c - C 中表达式的结果类型... 整数提升和通常的转换
- python - python如何按分钟舍入时间戳?
- jquery - 嵌套 jquery $.each 重复迭代问题
- javascript - 如何键入定义解构的箭头函数表达式参数?
- c# - 如何在 C# 中导入一个 fortran dll,其子例程包含数组输出?
- sql - 自动更新日期的 SQL 查询
- wget - wget --accept-regex 用于 url 路径匹配?
- karate - 空手道:使用 json 过滤器路径时,路径 $['data'] 中缺少属性
- shell - Jenkins 文件中的“sh”命令是否启动新会话或新 shell?
- python - 如何在 django 中为每个请求添加过滤器?