private boolean internalEnableNotifications(@Nullable final BluetoothGattCharacteristic characteristic) {
		final BluetoothGatt gatt = bluetoothGatt;
		if (gatt == null || characteristic == null || !connected)
			return false;

		final BluetoothGattDescriptor descriptor = getCccd(characteristic, BluetoothGattCharacteristic.PROPERTY_NOTIFY);
		if (descriptor != null) {
			log(Log.DEBUG, () -> "gatt.setCharacteristicNotification(" + characteristic.getUuid() + ", true)");
			try {
				gatt.setCharacteristicNotification(characteristic, true);
			} catch (final SecurityException e) {
				log(Log.ERROR, e::getLocalizedMessage);
				return false;
			}

			log(Log.VERBOSE, () -> "Enabling notifications for " + characteristic.getUuid());
			try {
				if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
					log(Log.DEBUG, () ->
							"gatt.writeDescriptor(00002902-0000-1000-8000-00805f9b34fb, value=0x01-00)");
					return gatt.writeDescriptor(descriptor, BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE) == BluetoothStatusCodes.SUCCESS;
				} else {
					log(Log.DEBUG, () -> "descriptor.setValue(0x01-00)");
					descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
					log(Log.DEBUG, () -> "gatt.writeDescriptor(00002902-0000-1000-8000-00805f9b34fb)");
					if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
						return gatt.writeDescriptor(descriptor);
					} else {
						return internalWriteDescriptorWorkaround(descriptor);
					}
				}
			} catch (final SecurityException e) {
				log(Log.ERROR, e::getLocalizedMessage);
				return false;
			}
		}
		return false;
	}
When the device is bonded and has the Generic Attribute service and the Service Changed
characteristic this method enables indications on this characteristic.
In case one of the requirements is not fulfilled this method returns <code>false</code>.

@return <code>true</code> when the request has been sent, <code>false</code> when the device
is not bonded, does not have the Generic Attribute service, the GA service does not have
the Service Changed characteristic or this characteristic does not have the CCCD.
ble/src/main/java/no/nordicsemi/android/ble/BleManagerHandler.java