I have the following code that is working perfectly on Android 12 and below, but that is crashing on Android 13 for no apparent reason.
I'm implementing ObservableBleManager and calling:
writeCharacteristic(characteristic, data)
.done {
// emit success
}
.fail { _, _ ->
// emit error
}
.enqueue()
but it's crashing like this:
2022-09-13 11:30:54.265 23853-23853/com V/Android-BLE-Library: Writing characteristic <custom characteristic> (WRITE REQUEST)
2022-09-13 11:30:54.265 23853-23853/com D/Android-BLE-Library: gatt.writeCharacteristic(<custom characteristic>)
2022-09-13 11:30:55.003 23853-23867/com D/BluetoothAdapter: onBluetoothServiceDown
2022-09-13 11:30:55.007 23853-23869/com D/BluetoothAdapter: onBluetoothServiceDown
2022-09-13 11:30:55.013 23853-23853/com D/Android-BLE-Library: [Broadcast] Action received: android.bluetooth.adapter.action.STATE_CHANGED, state changed to TURNING OFF
2022-09-13 11:30:55.013 23853-23853/com I/Android-BLE-Library: Disconnected
2022-09-13 11:30:55.035 23853-23853/com D/Android-BLE-Library: gatt.close()
2022-09-13 11:30:55.035 23853-23853/com D/BluetoothGatt: close()
2022-09-13 11:30:55.035 23853-23853/com D/BluetoothGatt: unregisterApp() - mClientIf=6
2022-09-13 11:30:55.036 23853-23853/com E/BluetoothGatt: android.os.DeadObjectException
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(BinderProxy.java:584)
at android.bluetooth.IBluetoothGatt$Stub$Proxy.unregisterClient(IBluetoothGatt.java:1506)
at android.bluetooth.BluetoothGatt.unregisterApp(BluetoothGatt.java:941)
at android.bluetooth.BluetoothGatt.close(BluetoothGatt.java:799)
at no.nordicsemi.android.ble.BleManagerHandler.close(BleManagerHandler.java:422)
at no.nordicsemi.android.ble.BleManagerHandler.notifyDeviceDisconnected(BleManagerHandler.java:1520)
Please note that the read instead is working fine. We found out that there is a crash with this error message:
A/libc: FORTIFY: memcpy: prevented 546-byte write into 513-byte buffer
Seems that the payload is too big. However I can't understand why on Android 13 is so tiny and on Android 12 and below is working :(