Merge "Fix connecting to profiles when bonding from local device (1/3)"
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user