summaryrefslogtreecommitdiff
path: root/service/java/com/android/server/bluetooth/BluetoothManagerService.java
diff options
context:
space:
mode:
authorRahul Sabnis <rahulsabnis@google.com>2022-04-14 10:43:17 -0700
committerRahul Sabnis <rahulsabnis@google.com>2022-04-14 10:50:42 -0700
commit320618b16ff4923727d81be41dafe81a3876b123 (patch)
tree24c313bee79cad42def1cbf831be15d4f33a5726 /service/java/com/android/server/bluetooth/BluetoothManagerService.java
parent2fece9705427955c24e47ce197fe4a0c595c7860 (diff)
Listen for Intent.ACTION_USER_SWITCHED in BluetoothManagerService
instead of using the SystemService#onUserSwitching method Tag: #feature Bug: 228920751 Test: Manual Ignore-AOSP-First: Change only present in tm-dev Change-Id: Ic8c32c29662389bd62fa1684de9679c369545874
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);