Skips the consent pairing dialog for recently associated CDM app and device combos because they have already been shown the CDM prompt which implicitly provides consent to bond.

Tag: #feature
Bug: 172006481
Test: Manual
Change-Id: I541b720c6b8b6e55be10e04f202e0a58cf33715f
This commit is contained in:
Rahul Sabnis
2021-01-29 12:38:13 -08:00
parent 36192d4044
commit 626ffc2010
3 changed files with 29 additions and 2 deletions

View File

@@ -1654,7 +1654,7 @@ public final class BluetoothAdapter {
mContext = context;
}
private String getOpPackageName() {
String getOpPackageName() {
// Workaround for legacy API for getting a BluetoothAdapter not
// passing a context
if (mContext != null) {

View File

@@ -1236,7 +1236,8 @@ public final class BluetoothDevice implements Parcelable {
return false;
}
try {
return service.createBond(this, transport, oobData);
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
return service.createBond(this, transport, oobData, adapter.getOpPackageName());
} catch (RemoteException e) {
Log.e(TAG, "", e);
}
@@ -1393,6 +1394,31 @@ public final class BluetoothDevice implements Parcelable {
return BOND_NONE;
}
/**
* Checks whether this bluetooth device is associated with CDM and meets the criteria to skip
* the bluetooth pairing dialog because it has been already consented by the CDM prompt.
*
* @return true if we can bond without the dialog, false otherwise
*
* @hide
*/
@SystemApi
@RequiresPermission(Manifest.permission.BLUETOOTH_PRIVILEGED)
public boolean canBondWithoutDialog() {
final IBluetooth service = sService;
if (service == null) {
Log.e(TAG, "BT not enabled. Cannot check if we can skip pairing dialog");
return false;
}
try {
if (DBG) Log.d(TAG, "canBondWithoutDialog, device: " + this);
return service.canBondWithoutDialog(this);
} catch (RemoteException e) {
Log.e(TAG, "", e);
}
return false;
}
/**
* Returns whether there is an open connection to this device.
*