Set BondState to Bonding only if it not Bonded already.

Sometimes we might be paired but the other end might not have stored the link
key. So when we initiate connection the other end will ask for the authorization.
This was setting out Bond State to Bonding.

Change-Id: Iba6fd660ac90a3f48da62e7b6cf479054624a5af
diff --git a/core/java/android/server/BluetoothEventLoop.java b/core/java/android/server/BluetoothEventLoop.java
index 037e9d3..0152223 100644
--- a/core/java/android/server/BluetoothEventLoop.java
+++ b/core/java/android/server/BluetoothEventLoop.java
@@ -403,9 +403,13 @@
             mBluetoothService.cancelPairingUserInput(address);
             return null;
         }
-        // Set state to BONDING, for incoming connections it will be set here.
-        // For outgoing connections, it gets set when call createBond.
-        mBluetoothService.getBondState().setBondState(address, BluetoothDevice.BOND_BONDING);
+        // Set state to BONDING. For incoming connections it will be set here.
+        // For outgoing connections, it gets set when we call createBond.
+        // Also set it only when the state is not already Bonded, we can sometimes
+        // get an authorization request from the remote end if it doesn't have the link key
+        // while we still have it.
+        if (mBluetoothService.getBondState().getBondState(address) != BluetoothDevice.BOND_BONDED)
+            mBluetoothService.getBondState().setBondState(address, BluetoothDevice.BOND_BONDING);
         return address;
     }