diff options
| -rw-r--r-- | core/java/android/os/UserManager.java | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/core/java/android/os/UserManager.java b/core/java/android/os/UserManager.java index dd02e022c639..07c4b441655e 100644 --- a/core/java/android/os/UserManager.java +++ b/core/java/android/os/UserManager.java @@ -59,7 +59,7 @@ import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.location.LocationManager; import android.provider.Settings; -import android.telephony.TelephonyManager; +import android.telecom.TelecomManager; import android.util.AndroidException; import android.util.ArraySet; import android.util.Log; @@ -2139,13 +2139,8 @@ public class UserManager { mContext.getContentResolver(), Settings.Global.ALLOW_USER_SWITCHING_WHEN_SYSTEM_USER_LOCKED, 0) != 0; boolean isSystemUserUnlocked = isUserUnlocked(UserHandle.SYSTEM); - boolean inCall = false; - TelephonyManager telephonyManager = mContext.getSystemService(TelephonyManager.class); - if (telephonyManager != null) { - inCall = telephonyManager.getCallState() != TelephonyManager.CALL_STATE_IDLE; - } boolean isUserSwitchDisallowed = hasUserRestrictionForUser(DISALLOW_USER_SWITCH, mUserId); - return (allowUserSwitchingWhenSystemUserLocked || isSystemUserUnlocked) && !inCall + return (allowUserSwitchingWhenSystemUserLocked || isSystemUserUnlocked) && !inCall() && !isUserSwitchDisallowed; } @@ -2184,11 +2179,8 @@ public class UserManager { android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.INTERACT_ACROSS_USERS}, conditional = true) public @UserSwitchabilityResult int getUserSwitchability(UserHandle userHandle) { - final TelephonyManager tm = - (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE); - int flags = SWITCHABILITY_STATUS_OK; - if (tm.getCallState() != TelephonyManager.CALL_STATE_IDLE) { + if (inCall()) { flags |= SWITCHABILITY_STATUS_USER_IN_CALL; } if (hasUserRestrictionForUser(DISALLOW_USER_SWITCH, userHandle)) { @@ -5622,6 +5614,11 @@ public class UserManager { } } + private boolean inCall() { + final TelecomManager telecomManager = mContext.getSystemService(TelecomManager.class); + return telecomManager != null && telecomManager.isInCall(); + } + /* Cache key for anything that assumes that userIds cannot be re-used without rebooting. */ private static final String CACHE_KEY_STATIC_USER_PROPERTIES = "cache_key.static_user_props"; |