Prior to Android 6 there was a bug on Android. The gatt.writeDescriptor(descriptor) method was using parent characteristic's write type, instead of always using WRITE_DEFAULT (Write Request).
nRF Toolbox was ensuring the write type for normal descriptor writes (see here), but this workaround wasn't applied during enabling notifications/indications (here, here and here).
In all those cases it also should ensure correct write type.
Prior to Android 6 there was a bug on Android. The
gatt.writeDescriptor(descriptor)
method was using parent characteristic's write type, instead of always using WRITE_DEFAULT (Write Request). nRF Toolbox was ensuring the write type for normal descriptor writes (see here), but this workaround wasn't applied during enabling notifications/indications (here, here and here). In all those cases it also should ensure correct write type.