Bluetooth: fix issues re-enabling after crash
am: fa63068deb
Change-Id: I89c5253d284b64359c1abc5c078bcd69bedfc503
This commit is contained in:
@@ -339,13 +339,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);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -610,20 +612,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);
|
||||
@@ -763,10 +771,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