首页 > 解决方案 > 即使存在 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;

有人有什么主意吗?

标签: androidbluetooth-lowenergy

解决方案


推荐阅读