Merge "Bluetooth: fix issues re-enabling after crash"

am: e2c22e38d5

Change-Id: I6722c1b8d839918e2ce7918f5f7b8583a14c1ded
This commit is contained in:
Marie Janssen
2016-12-16 23:07:42 +00:00
committed by android-build-merger

View File

@@ -321,12 +321,15 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
/**
* Save the Bluetooth on/off state
*
*/
private void persistBluetoothSetting(int value) {
if (DBG) Slog.d(TAG, "Persisting Bluetooth Setting: " + value);
// waive WRITE_SECURE_SETTINGS permission check
long callingIdentity = Binder.clearCallingIdentity();
Settings.Global.putInt(mContext.getContentResolver(),
Settings.Global.BLUETOOTH_ON,
value);
Binder.restoreCallingIdentity(callingIdentity);
}
/**
@@ -591,20 +594,26 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
}
/**
* Action taken when GattService is turned off
* Action taken when GattService is turned on
*/
private void onBluetoothGattServiceUp() {
if (DBG) Slog.d(TAG,"BluetoothGatt Service is Up");
try {
mBluetoothLock.readLock().lock();
if (isBleAppPresent() == false && mBluetooth != null
&& mBluetooth.getState() == BluetoothAdapter.STATE_BLE_ON) {
if (mBluetooth == null) {
if (DBG) Slog.w(TAG, "onBluetoothServiceUp: mBluetooth is null!");
return;
}
int st = mBluetooth.getState();
if (st != BluetoothAdapter.STATE_BLE_ON) {
if (DBG) Slog.v(TAG, "onBluetoothServiceUp: state isn't BLE_ON: " +
BluetoothAdapter.nameForState(st));
return;
}
if (isBluetoothPersistedStateOnBluetooth() || !isBleAppPresent()) {
// This triggers transition to STATE_ON
mBluetooth.onLeServiceUp();
// waive WRITE_SECURE_SETTINGS permission check
long callingIdentity = Binder.clearCallingIdentity();
persistBluetoothSetting(BLUETOOTH_ON_BLUETOOTH);
Binder.restoreCallingIdentity(callingIdentity);
}
} catch (RemoteException e) {
Slog.e(TAG,"Unable to call onServiceUp", e);
@@ -723,10 +732,7 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
synchronized(mReceiver) {
if (persist) {
// waive WRITE_SECURE_SETTINGS permission check
long callingIdentity = Binder.clearCallingIdentity();
persistBluetoothSetting(BLUETOOTH_OFF);
Binder.restoreCallingIdentity(callingIdentity);
}
mEnableExternal = false;
sendDisableMsg();