diff options
author | Jeff Sharkey <jsharkey@android.com> | 2012-09-16 12:49:00 -0700 |
---|---|---|
committer | Jeff Sharkey <jsharkey@android.com> | 2012-09-18 13:26:26 -0700 |
commit | 27bd34d9d9fe99f11b80aa0bbdb402fb47ef4158 (patch) | |
tree | da11d791bc6171b079f6af207010279d807d81a8 /services/java/com/android/server/pm/UserManagerService.java | |
parent | a4b0e5590dc303df68256254f732ef632e6912f3 (diff) |
Multi-user MTP.
The current MTP kernel driver at /dev/mtp_usb is exclusive, meaning
only one process can have it open. In addition, each MTP session
with a desktop requires unique object IDs, which doesn't hold true
across users on the device.
To solve these two issues, when switching users we cycle the USB host
stack to disconnect both local and remote MTP connections, giving the
new user's media process a chance to claim /dev/mtp_usb, and causing
the desktop to initiate a new MTP session.
This change also allows BroadcastReceivers to registerReceiver()
allow retrieval of a current sticky broadcast. Adds a system property
to override maximum users. Removes MOUNTED broadcasts for secondary
users. Allows INTERACT_ACROSS_USERS to getCurrentUser().
Bug: 6925114
Change-Id: I02b4a1b535af95fb2142655887b6d15a8068d18a
Diffstat (limited to 'services/java/com/android/server/pm/UserManagerService.java')
-rw-r--r-- | services/java/com/android/server/pm/UserManagerService.java | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/services/java/com/android/server/pm/UserManagerService.java b/services/java/com/android/server/pm/UserManagerService.java index be86628eea12..2dc9a6a2bc53 100644 --- a/services/java/com/android/server/pm/UserManagerService.java +++ b/services/java/com/android/server/pm/UserManagerService.java @@ -39,6 +39,7 @@ import android.os.ParcelFileDescriptor; import android.os.Process; import android.os.RemoteException; import android.os.UserHandle; +import android.os.UserManager; import android.util.AtomicFile; import android.util.Slog; import android.util.SparseArray; @@ -85,8 +86,6 @@ public class UserManagerService extends IUserManager.Stub { private SparseArray<UserInfo> mUsers = new SparseArray<UserInfo>(); - private final int mUserLimit; - private int[] mUserIds; private boolean mGuestEnabled; private int mNextSerialNumber; @@ -129,8 +128,6 @@ public class UserManagerService extends IUserManager.Stub { mPm = pm; mInstallLock = installLock; mPackagesLock = packagesLock; - mUserLimit = mContext.getResources().getInteger( - com.android.internal.R.integer.config_multiuserMaximumUsers); mUsersDir = new File(dataDir, USER_INFO_DIR); mUsersDir.mkdirs(); // Make zeroth user directory, for services to migrate their files to that location @@ -275,7 +272,7 @@ public class UserManagerService extends IUserManager.Stub { */ private boolean isUserLimitReachedLocked() { int nUsers = mUsers.size(); - return nUsers >= mUserLimit; + return nUsers >= UserManager.getMaxSupportedUsers(); } /** |