在Android 13上解决此问题,可以使用以下代码示例中的解决办法,这里使用了一个新的“writeTypeDefault”标志。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
mBluetoothGattCharacteristic.setWriteType(BluetoothGattCharacteristic.WRITE_TYPE_DEFAULT);
}
else {
mBluetoothGattCharacteristic.setWriteType(BluetoothGattCharacteristic.WRITE_TYPE_NO_RESPONSE);
}
mBluetoothGattCharacteristic.setValue(value);
mBluetoothGatt.writeCharacteristic(mBluetoothGattCharacteristic);
这个解决办法会检查 Android 版本,如果版本大于或等于 Android 6.0(Marshmallow),则使用 WRITE_TYPE_DEFAULT 选项;否则,使用 WRITE_TYPE_NO_RESPONSE 选项。这个处理方法已经被证明能够避免 BluetoothGattCharacteristic > write 崩溃问题。