Merge "Bluetooth: fix issues re-enabling after crash"
am: e2c22e38d5
Change-Id: I6722c1b8d839918e2ce7918f5f7b8583a14c1ded
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user