summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Marie Janssen <jamuraa@google.com> 2016-12-16 23:07:42 +0000
committer android-build-merger <android-build-merger@google.com> 2016-12-16 23:07:42 +0000
commitff0d3e1c8dce08373a42bf89ee9b781ef41cab3f (patch)
treea4fa2fef823f79f036eb5f20a44a30c11c9d6e0d
parenta791fee2bc06afabde722ac7919ba65c646b58a1 (diff)
parente2c22e38d522641e0b321ef334c8803f5dc7c08f (diff)
Merge "Bluetooth: fix issues re-enabling after crash"
am: e2c22e38d5 Change-Id: I6722c1b8d839918e2ce7918f5f7b8583a14c1ded
-rw-r--r--services/core/java/com/android/server/BluetoothManagerService.java28
1 files changed, 17 insertions, 11 deletions
diff --git a/services/core/java/com/android/server/BluetoothManagerService.java b/services/core/java/com/android/server/BluetoothManagerService.java
index d488d63d4576..5f0e0d0ce27b 100644
--- a/services/core/java/com/android/server/BluetoothManagerService.java
+++ b/services/core/java/com/android/server/BluetoothManagerService.java
@@ -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();