summaryrefslogtreecommitdiff
path: root/service/java/com/android/server/bluetooth/BluetoothManagerService.java
diff options
context:
space:
mode:
Diffstat (limited to 'service/java/com/android/server/bluetooth/BluetoothManagerService.java')
-rw-r--r--service/java/com/android/server/bluetooth/BluetoothManagerService.java27
1 files changed, 16 insertions, 11 deletions
diff --git a/service/java/com/android/server/bluetooth/BluetoothManagerService.java b/service/java/com/android/server/bluetooth/BluetoothManagerService.java
index 4ee392f08d..b9af522955 100644
--- a/service/java/com/android/server/bluetooth/BluetoothManagerService.java
+++ b/service/java/com/android/server/bluetooth/BluetoothManagerService.java
@@ -216,7 +216,6 @@ public class BluetoothManagerService extends IBluetoothManager.Stub {
private final ReentrantReadWriteLock mBluetoothLock = new ReentrantReadWriteLock();
private boolean mBinding;
private boolean mUnbinding;
- private int mForegroundUserId;
private BluetoothModeChangeHelper mBluetoothModeChangeHelper;
@@ -544,7 +543,6 @@ public class BluetoothManagerService extends IBluetoothManager.Stub {
String value = SystemProperties.get(
"persist.sys.fflag.override.settings_bluetooth_hearing_aid");
- mForegroundUserId = UserHandle.SYSTEM.getIdentifier();
if (!TextUtils.isEmpty(value)) {
boolean isHearingAidEnabled = Boolean.parseBoolean(value);
@@ -567,11 +565,23 @@ public class BluetoothManagerService extends IBluetoothManager.Stub {
IntentFilter filterUser = new IntentFilter();
filterUser.addAction(UserManager.ACTION_USER_RESTRICTIONS_CHANGED);
+ filterUser.addAction(Intent.ACTION_USER_SWITCHED);
filterUser.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
mContext.registerReceiverForAllUsers(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
- onUserRestrictionsChanged(getSendingUser());
+ switch (intent.getAction()) {
+ case Intent.ACTION_USER_SWITCHED:
+ int foregroundUserId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, 0);
+ propagateForegroundUserId(foregroundUserId);
+ break;
+ case UserManager.ACTION_USER_RESTRICTIONS_CHANGED:
+ onUserRestrictionsChanged(getSendingUser());
+ break;
+ default:
+ Log.e(TAG, "Unknown broadcast received in BluetoothManagerService receiver"
+ + " registered across all users");
+ }
}
}, filterUser, null, null);
@@ -2199,6 +2209,9 @@ public class BluetoothManagerService extends IBluetoothManager.Stub {
mBluetoothBinder = service;
mBluetooth = IBluetooth.Stub.asInterface(service);
+ int foregroundUserId = ActivityManager.getCurrentUser();
+ propagateForegroundUserId(foregroundUserId);
+
if (!isNameAndAddressSet()) {
Message getMsg = mHandler.obtainMessage(MESSAGE_GET_NAME_AND_ADDRESS);
mHandler.sendMessage(getMsg);
@@ -2238,8 +2251,6 @@ public class BluetoothManagerService extends IBluetoothManager.Stub {
BluetoothAdapter.STATE_BLE_TURNING_ON,
BluetoothAdapter.STATE_BLE_ON,
BluetoothAdapter.STATE_BLE_TURNING_OFF));
- } else {
- propagateForegroundUserId(mForegroundUserId);
}
break;
}
@@ -2377,12 +2388,6 @@ public class BluetoothManagerService extends IBluetoothManager.Stub {
}
mHandler.removeMessages(MESSAGE_USER_SWITCHED);
- // Save the foreground user id and propagate to BT process after it's restarted
- int toUserId = msg.arg1;
- if (mForegroundUserId != toUserId) {
- mForegroundUserId = toUserId;
- }
-
/* disable and enable BT when detect a user switch */
if (mBluetooth != null && isEnabled()) {
restartForReason(BluetoothProtoEnums.ENABLE_DISABLE_REASON_USER_SWITCH);