DO NOT MERGE Bluetooth: Ensure Bluetooth interface handle is valid

This change adds null checks to Bluetooth interface handle to prevent
using null references when BluetoothService is not up. Also removed
the callbacks for the intermediate state removed for now as they are
not being used.

Change-Id: I4c4a406c99a51e0759d9163f7d658d64dee11ad9
This commit is contained in:
Nitin Arora
2015-04-29 12:35:03 -07:00
committed by Andre Eisenbach
parent 93bbf2774d
commit 75dfd6b3bf

View File

@@ -503,7 +503,8 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
private void onBluetoothGattServiceUp() {
if (DBG) Log.d(TAG,"BluetoothGatt Service is Up");
try{
if (isBleAppPresent() == false && mBluetooth.getState() == BluetoothAdapter.STATE_BLE_ON) {
if (isBleAppPresent() == false && mBluetooth != null
&& mBluetooth.getState() == BluetoothAdapter.STATE_BLE_ON) {
mBluetooth.onLeServiceUp();
// waive WRITE_SECURE_SETTINGS permission check
@@ -522,32 +523,26 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
*/
private void sendBrEdrDownCallback() {
if (DBG) Log.d(TAG,"Calling sendBrEdrDownCallback callbacks");
int n = mCallbacks.beginBroadcast();
if(mBluetooth == null) {
Log.w(TAG, "Bluetooth handle is null");
return;
}
if (isBleAppPresent() == false) {
try {
mBluetooth.onBrEdrDown();
} catch(RemoteException e) {
Log.e(TAG,"Unable to call onBrEdrDown", e);
Log.e(TAG, "Call to onBrEdrDown() failed.", e);
}
}
else{//need to stay at BLE ON. disconnect all Gatt connections
} else {
// Need to stay at BLE ON. Disconnect all Gatt connections
try{
mBluetoothGatt.unregAll();//disconnectAll();
mBluetoothGatt.unregAll();
} catch(RemoteException e) {
Log.e(TAG,"Unable to disconn all", e);
Log.e(TAG, "Unable to disconnect all apps.", e);
}
}
Log.d(TAG,"Broadcasting onBrEdrDown() to " + n + " receivers.");
for (int i=0; i <n; i++) {
try {
mCallbacks.getBroadcastItem(i).onBrEdrDown();
} catch (RemoteException e) {
Log.e(TAG, "Unable to call sendBrEdrDownCallback() on callback #" + i, e);
}
}
mCallbacks.finishBroadcast();
}
/** @hide*/