Merge "Fix connecting to profiles when bonding from local device (1/3)"

am: 44c013d739

Change-Id: I4cc9e7c960e51ec49fcaf3f16968afac7b6cc471
This commit is contained in:
Jakub Pawlowski
2016-10-06 21:00:51 +00:00
committed by android-build-merger
3 changed files with 11 additions and 8 deletions

View File

@@ -892,6 +892,14 @@ public final class BluetoothDevice implements Parcelable {
return false;
}
/** @hide */
public boolean isBondingInitiatedLocally() {
try {
return sService.isBondingInitiatedLocally(this);
} catch (RemoteException e) {Log.e(TAG, "", e);}
return false;
}
/**
* Set the Out Of Band data for a remote device to be used later
* in the pairing mechanism. Users can obtain this data through other

View File

@@ -62,6 +62,7 @@ interface IBluetooth
boolean cancelBondProcess(in BluetoothDevice device);
boolean removeBond(in BluetoothDevice device);
int getBondState(in BluetoothDevice device);
boolean isBondingInitiatedLocally(in BluetoothDevice device);
int getConnectionState(in BluetoothDevice device);
String getRemoteName(in BluetoothDevice device);

View File

@@ -102,9 +102,6 @@ public final class CachedBluetoothDevice implements Comparable<CachedBluetoothDe
private static final long MAX_UUID_DELAY_FOR_AUTO_CONNECT = 5000;
private static final long MAX_HOGP_DELAY_FOR_AUTO_CONNECT = 30000;
/** Auto-connect after pairing only if locally initiated. */
private boolean mConnectAfterPairing;
/**
* Describes the current device and profile for logging.
*
@@ -300,7 +297,6 @@ public final class CachedBluetoothDevice implements Comparable<CachedBluetoothDe
return false;
}
mConnectAfterPairing = true; // auto-connect after pairing
return true;
}
@@ -309,7 +305,7 @@ public final class CachedBluetoothDevice implements Comparable<CachedBluetoothDe
* slightly different for local vs. remote initiated pairing dialogs.
*/
boolean isUserInitiatedPairing() {
return mConnectAfterPairing;
return mDevice.isBondingInitiatedLocally();
}
public void unpair() {
@@ -549,7 +545,6 @@ public final class CachedBluetoothDevice implements Comparable<CachedBluetoothDe
void onBondingStateChanged(int bondState) {
if (bondState == BluetoothDevice.BOND_NONE) {
mProfiles.clear();
mConnectAfterPairing = false; // cancel auto-connect
setPhonebookPermissionChoice(ACCESS_UNKNOWN);
setMessagePermissionChoice(ACCESS_UNKNOWN);
setSimPermissionChoice(ACCESS_UNKNOWN);
@@ -562,10 +557,9 @@ public final class CachedBluetoothDevice implements Comparable<CachedBluetoothDe
if (bondState == BluetoothDevice.BOND_BONDED) {
if (mDevice.isBluetoothDock()) {
onBondingDockConnect();
} else if (mConnectAfterPairing) {
} else if (mDevice.isBondingInitiatedLocally()) {
connect(false);
}
mConnectAfterPairing = false;
}
}