From 4b6d6c202be5221a19b6d4af758b15df4fd57823 Mon Sep 17 00:00:00 2001 From: Cheney Ni Date: Tue, 21 Aug 2018 12:17:42 +0800 Subject: Be the current user to get A2DP proxy After user switched, Bluetooth process will be restarted to run as secondary user and some system process like AudioService keeps as primary user. When BluetoothA2dp did rebind, it still used primary UID for those system process and caused they could not invoke A2DP APIs. This changes to use current user ID when rebinding to A2dpService and system process can get correct A2DP proxy after user switched. Bug: 112469503 Test: manual Change-Id: If5ee945b0dcf2044ef2baedd762751fa6ef3d09a --- core/java/android/bluetooth/BluetoothA2dp.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/java/android/bluetooth/BluetoothA2dp.java b/core/java/android/bluetooth/BluetoothA2dp.java index 966f9025e8a3..d21f76d435e6 100644 --- a/core/java/android/bluetooth/BluetoothA2dp.java +++ b/core/java/android/bluetooth/BluetoothA2dp.java @@ -30,6 +30,7 @@ import android.os.Binder; import android.os.IBinder; import android.os.ParcelUuid; import android.os.RemoteException; +import android.os.UserHandle; import android.util.Log; import com.android.internal.annotations.GuardedBy; @@ -270,7 +271,7 @@ public final class BluetoothA2dp implements BluetoothProfile { ComponentName comp = intent.resolveSystemService(mContext.getPackageManager(), 0); intent.setComponent(comp); if (comp == null || !mContext.bindServiceAsUser(intent, mConnection, 0, - mContext.getUser())) { + UserHandle.CURRENT_OR_SELF)) { Log.e(TAG, "Could not bind to Bluetooth A2DP Service with " + intent); return false; } -- cgit v1.2.3-59-g8ed1b