Merge change Ie5d93b7e into eclair
* changes: Set the Bond State to NONE when we receive a Agent Cancel.
This commit is contained in:
@ -287,9 +287,13 @@ public final class BluetoothDevice implements Parcelable {
|
|||||||
/** A bond attempt failed because of repeated attempts
|
/** A bond attempt failed because of repeated attempts
|
||||||
* @hide */
|
* @hide */
|
||||||
public static final int UNBOND_REASON_REPEATED_ATTEMPTS = 7;
|
public static final int UNBOND_REASON_REPEATED_ATTEMPTS = 7;
|
||||||
|
/** A bond attempt failed because we received an Authentication Cancel
|
||||||
|
* by remote end
|
||||||
|
* @hide */
|
||||||
|
public static final int UNBOND_REASON_REMOTE_AUTH_CANCELED = 8;
|
||||||
/** An existing bond was explicitly revoked
|
/** An existing bond was explicitly revoked
|
||||||
* @hide */
|
* @hide */
|
||||||
public static final int UNBOND_REASON_REMOVED = 8;
|
public static final int UNBOND_REASON_REMOVED = 9;
|
||||||
|
|
||||||
/** The user will be prompted to enter a pin
|
/** The user will be prompted to enter a pin
|
||||||
* @hide */
|
* @hide */
|
||||||
|
@ -54,6 +54,7 @@ class BluetoothEventLoop {
|
|||||||
private static final int EVENT_AUTO_PAIRING_FAILURE_ATTEMPT_DELAY = 1;
|
private static final int EVENT_AUTO_PAIRING_FAILURE_ATTEMPT_DELAY = 1;
|
||||||
private static final int EVENT_RESTART_BLUETOOTH = 2;
|
private static final int EVENT_RESTART_BLUETOOTH = 2;
|
||||||
private static final int EVENT_PAIRING_CONSENT_DELAYED_ACCEPT = 3;
|
private static final int EVENT_PAIRING_CONSENT_DELAYED_ACCEPT = 3;
|
||||||
|
private static final int EVENT_AGENT_CANCEL = 4;
|
||||||
|
|
||||||
private static final int CREATE_DEVICE_ALREADY_EXISTS = 1;
|
private static final int CREATE_DEVICE_ALREADY_EXISTS = 1;
|
||||||
private static final int CREATE_DEVICE_SUCCESS = 0;
|
private static final int CREATE_DEVICE_SUCCESS = 0;
|
||||||
@ -90,6 +91,22 @@ class BluetoothEventLoop {
|
|||||||
mBluetoothService.setPairingConfirmation(address, true);
|
mBluetoothService.setPairingConfirmation(address, true);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case EVENT_AGENT_CANCEL:
|
||||||
|
// Set the Bond State to BOND_NONE.
|
||||||
|
// We always have only 1 device in BONDING state.
|
||||||
|
String[] devices =
|
||||||
|
mBluetoothService.getBondState().listInState(BluetoothDevice.BOND_BONDING);
|
||||||
|
if (devices.length == 0) {
|
||||||
|
break;
|
||||||
|
} else if (devices.length > 1) {
|
||||||
|
Log.e(TAG, " There is more than one device in the Bonding State");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
address = devices[0];
|
||||||
|
mBluetoothService.getBondState().setBondState(address,
|
||||||
|
BluetoothDevice.BOND_NONE,
|
||||||
|
BluetoothDevice.UNBOND_REASON_REMOTE_AUTH_CANCELED);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -544,6 +561,10 @@ class BluetoothEventLoop {
|
|||||||
private void onAgentCancel() {
|
private void onAgentCancel() {
|
||||||
Intent intent = new Intent(BluetoothDevice.ACTION_PAIRING_CANCEL);
|
Intent intent = new Intent(BluetoothDevice.ACTION_PAIRING_CANCEL);
|
||||||
mContext.sendBroadcast(intent, BLUETOOTH_ADMIN_PERM);
|
mContext.sendBroadcast(intent, BLUETOOTH_ADMIN_PERM);
|
||||||
|
|
||||||
|
mHandler.sendMessageDelayed(mHandler.obtainMessage(EVENT_AGENT_CANCEL),
|
||||||
|
1500);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -571,7 +571,7 @@ public class BluetoothService extends IBluetooth.Stub {
|
|||||||
return state.intValue();
|
return state.intValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
private synchronized String[] listInState(int state) {
|
/*package*/ synchronized String[] listInState(int state) {
|
||||||
ArrayList<String> result = new ArrayList<String>(mState.size());
|
ArrayList<String> result = new ArrayList<String>(mState.size());
|
||||||
for (Map.Entry<String, Integer> e : mState.entrySet()) {
|
for (Map.Entry<String, Integer> e : mState.entrySet()) {
|
||||||
if (e.getValue().intValue() == state) {
|
if (e.getValue().intValue() == state) {
|
||||||
|
Reference in New Issue
Block a user