Merge "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." into sc-dev

This commit is contained in:
Rahul Sabnis
2021-02-16 23:30:19 +00:00
committed by Android (Google) Code Review
3 changed files with 29 additions and 2 deletions

View File

@@ -1852,6 +1852,7 @@ package android.bluetooth {
}
public final class BluetoothDevice implements android.os.Parcelable {
method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean canBondWithoutDialog();
method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean cancelBondProcess();
method @Nullable @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public byte[] getMetadata(int);
method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getSimAccessPermission();

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.
*