Do not handle PAIRING_VARIANT_PIN

The user has to enter a pin in such cases. Since QBluetoothLocalDevice
does not have an API to return a pin it makes no sense for QtBluetooth
to handle this type of request. Android will provide its own fall back
form.

This patch is mostly a revert of f8c0572ddc.

Fixes: QTBUG-76565
Task-number: QTBUG-70295
Change-Id: I61062ac84ce508f3b82c7359a60d5c9c5bba86a4
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
This commit is contained in:
Alex Blasche 2019-07-16 11:17:28 +02:00
parent 4ac755bb6e
commit 263fc51863
3 changed files with 11 additions and 13 deletions

View File

@ -189,6 +189,14 @@ void LocalDeviceBroadcastReceiver::onReceive(JNIEnv *env, jobject context, jobje
return; return;
case 0: //BluetoothDevice.PAIRING_VARIANT_PIN case 0: //BluetoothDevice.PAIRING_VARIANT_PIN
{ {
qCDebug(QT_BT_ANDROID) << "Pairing : PAIRING_VARIANT_PIN -> use Android default handling";
// The section below is disabled because this Android pairing variant
// requires the user to enter a pin. Since QBluetoothLocalDevice does
// not have a setPin() equivalent which might be used to return the user's value.
// For now we ignore this request. If an app ignores such requests,
// Android shows a "fall-back" pin code entry form.
/*
//generate a random key //generate a random key
const QString pin = QStringLiteral("%1").arg(QRandomGenerator::global()->bounded(1000000), const QString pin = QStringLiteral("%1").arg(QRandomGenerator::global()->bounded(1000000),
6, 10, QLatin1Char('0')); 6, 10, QLatin1Char('0'));
@ -225,10 +233,12 @@ void LocalDeviceBroadcastReceiver::onReceive(JNIEnv *env, jobject context, jobje
} }
const QBluetoothAddress address(bluetoothDevice.callObjectMethod<jstring>("getAddress").toString()); const QBluetoothAddress address(bluetoothDevice.callObjectMethod<jstring>("getAddress").toString());
emit pairingDisplayPinCode(address, pin); emit pairingDisplayPinCode(address, pin);*/
break;
} }
case 2: //BluetoothDevice.PAIRING_VARIANT_PASSKEY_CONFIRMATION case 2: //BluetoothDevice.PAIRING_VARIANT_PASSKEY_CONFIRMATION
{ {
qCDebug(QT_BT_ANDROID) << "Pairing : PAIRING_VARIANT_PASSKEY_CONFIRMATION";
keyExtra = valueForStaticField(JavaNames::BluetoothDevice, keyExtra = valueForStaticField(JavaNames::BluetoothDevice,
JavaNames::ExtraPairingKey); JavaNames::ExtraPairingKey);
key = intentObject.callMethod<jint>("getIntExtra", key = intentObject.callMethod<jint>("getIntExtra",

View File

@ -69,8 +69,6 @@ QBluetoothLocalDevicePrivate::QBluetoothLocalDevicePrivate(
this, &QBluetoothLocalDevicePrivate::processConnectDeviceChanges); this, &QBluetoothLocalDevicePrivate::processConnectDeviceChanges);
connect(receiver, &LocalDeviceBroadcastReceiver::pairingDisplayConfirmation, connect(receiver, &LocalDeviceBroadcastReceiver::pairingDisplayConfirmation,
this, &QBluetoothLocalDevicePrivate::processDisplayConfirmation); this, &QBluetoothLocalDevicePrivate::processDisplayConfirmation);
connect(receiver, &LocalDeviceBroadcastReceiver::pairingDisplayPinCode,
this, &QBluetoothLocalDevicePrivate::processDisplayPinCode);
} }
QBluetoothLocalDevicePrivate::~QBluetoothLocalDevicePrivate() QBluetoothLocalDevicePrivate::~QBluetoothLocalDevicePrivate()
@ -206,15 +204,6 @@ void QBluetoothLocalDevicePrivate::processDisplayConfirmation(const QBluetoothAd
return; return;
emit q_ptr->pairingDisplayConfirmation(address, pin); emit q_ptr->pairingDisplayConfirmation(address, pin);
}
void QBluetoothLocalDevicePrivate::processDisplayPinCode(const QBluetoothAddress &address, const QString &pin)
{
// only send pairing notification for pairing requests issued by
// this QBluetoothLocalDevice instance
if (pendingPairing(address) == -1)
return;
emit q_ptr->pairingDisplayPinCode(address, pin); emit q_ptr->pairingDisplayPinCode(address, pin);
} }

View File

@ -113,7 +113,6 @@ private slots:
QBluetoothLocalDevice::Pairing pairing); QBluetoothLocalDevice::Pairing pairing);
void processConnectDeviceChanges(const QBluetoothAddress &address, bool isConnectEvent); void processConnectDeviceChanges(const QBluetoothAddress &address, bool isConnectEvent);
void processDisplayConfirmation(const QBluetoothAddress &address, const QString &pin); void processDisplayConfirmation(const QBluetoothAddress &address, const QString &pin);
void processDisplayPinCode(const QBluetoothAddress &address, const QString &pin);
private: private:
QBluetoothLocalDevice *q_ptr; QBluetoothLocalDevice *q_ptr;