@RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
	protected Request ensureBond() {
		return Request.ensureBond().setRequestHandler(requestHandler);
	}
Returns a request to ensure the device is bonded and link is encrypted. On Android versions
4.3-12 (and perhaps later as well) the {@link BluetoothDevice#getBondState()} returns true
even if the link is not encrypted, or the device is not connected at all, checking only
if the bond information is present on Android. Moreover, calling
{@link BluetoothDevice#createBond()} returns false if bond is already present on Android,
despite not being used, giving no trustworthy method to ensure that link is encrypted.
<p>
This method will always call {@link BluetoothDevice#createBond()}. If this method returns
false (e.g. because the bond information is already present on Android), this will remove the
current bond information and call {@link BluetoothDevice#createBond()} again.
<p>
<b>Important:</b> This may fail, if:
<ul>
    <li>The device already has bonding, but encryption wasn't started, and your device
    does not support multiple bondings.</li>
    <li>Someone is pretending to be your device, and advertising with the same MAC. Calling
    this method may remove the valid bond and create a new one against the intruder. Always
    make sure the user bonds to the right devices and indicate it to the user.</li>
</ul>
<p>
The returned request must be either enqueued using {@link Request#enqueue()} for
asynchronous use, or awaited using await() in synchronous execution.

@return The request.
@since 2.2.3
@noinspection MismatchedJavadocCode
ble/src/main/java/no/nordicsemi/android/ble/BleManager.java