Loading Android.mk +1 −0 Original line number Diff line number Diff line Loading @@ -139,6 +139,7 @@ LOCAL_SRC_FILES += \ core/java/android/os/IRemoteCallback.aidl \ core/java/android/os/ISchedulingPolicyService.aidl \ core/java/android/os/IUpdateLock.aidl \ core/java/android/os/IUserManager.aidl \ core/java/android/os/IVibratorService.aidl \ core/java/android/service/dreams/IDreamManager.aidl \ core/java/android/service/dreams/IDreamService.aidl \ Loading api/current.txt +6 −0 Original line number Diff line number Diff line Loading @@ -5386,6 +5386,7 @@ package android.content { field public static final java.lang.String TEXT_SERVICES_MANAGER_SERVICE = "textservices"; field public static final java.lang.String UI_MODE_SERVICE = "uimode"; field public static final java.lang.String USB_SERVICE = "usb"; field public static final java.lang.String USER_SERVICE = "user"; field public static final java.lang.String VIBRATOR_SERVICE = "vibrator"; field public static final java.lang.String WALLPAPER_SERVICE = "wallpaper"; field public static final java.lang.String WIFI_P2P_SERVICE = "wifip2p"; Loading Loading @@ -16448,6 +16449,11 @@ package android.os { ctor public TransactionTooLargeException(); } public class UserManager { method public java.lang.String getUserName(); method public boolean supportsMultipleUsers(); } public abstract class Vibrator { method public abstract void cancel(); method public abstract boolean hasVibrator(); cmds/pm/src/com/android/commands/pm/Pm.java +8 −3 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import com.android.internal.content.PackageHelper; import android.app.ActivityManagerNative; import android.content.ComponentName; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.ContainerEncryptionParams; import android.content.pm.FeatureInfo; Loading @@ -39,9 +40,11 @@ import android.content.res.AssetManager; import android.content.res.Resources; import android.net.Uri; import android.os.Binder; import android.os.IUserManager; import android.os.Process; import android.os.RemoteException; import android.os.ServiceManager; import android.os.UserManager; import java.io.File; import java.lang.reflect.Field; Loading @@ -59,6 +62,7 @@ import javax.crypto.spec.SecretKeySpec; public final class Pm { IPackageManager mPm; IUserManager mUm; private WeakHashMap<String, Resources> mResourceCache = new WeakHashMap<String, Resources>(); Loading @@ -82,6 +86,7 @@ public final class Pm { return; } mUm = IUserManager.Stub.asInterface(ServiceManager.getService("user")); mPm = IPackageManager.Stub.asInterface(ServiceManager.getService("package")); if (mPm == null) { System.err.println(PM_NOT_RUNNING_ERR); Loading Loading @@ -985,7 +990,7 @@ public final class Pm { } name = arg; try { if (mPm.createUser(name, 0) == null) { if (mUm.createUser(name, 0) == null) { System.err.println("Error: couldn't create User."); showUsage(); } Loading Loading @@ -1017,7 +1022,7 @@ public final class Pm { return; } try { if (!mPm.removeUser(userId)) { if (!mUm.removeUser(userId)) { System.err.println("Error: couldn't remove user."); showUsage(); } Loading @@ -1034,7 +1039,7 @@ public final class Pm { return; } try { List<UserInfo> users = mPm.getUsers(); List<UserInfo> users = mUm.getUsers(); if (users == null) { System.err.println("Error: couldn't get users"); } else { Loading core/java/android/accounts/AccountManagerService.java +10 −6 Original line number Diff line number Diff line Loading @@ -51,6 +51,7 @@ import android.os.Message; import android.os.RemoteException; import android.os.SystemClock; import android.os.UserId; import android.os.UserManager; import android.text.TextUtils; import android.util.Log; import android.util.Pair; Loading Loading @@ -92,6 +93,7 @@ public class AccountManagerService private final Context mContext; private final PackageManager mPackageManager; private UserManager mUserManager; private HandlerThread mMessageThread; private final MessageHandler mMessageHandler; Loading Loading @@ -245,6 +247,13 @@ public class AccountManagerService initUser(0); } private UserManager getUserManager() { if (mUserManager == null) { mUserManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE); } return mUserManager; } private UserAccounts initUser(int userId) { synchronized (mUsers) { UserAccounts accounts = mUsers.get(userId); Loading Loading @@ -382,12 +391,7 @@ public class AccountManagerService } private List<UserInfo> getAllUsers() { try { return AppGlobals.getPackageManager().getUsers(); } catch (RemoteException re) { // Local to system process, shouldn't happen } return null; return getUserManager().getUsers(); } public void onServiceChanged(AuthenticatorDescription desc, boolean removed) { Loading core/java/android/app/ApplicationPackageManager.java +1 −75 Original line number Diff line number Diff line Loading @@ -41,8 +41,8 @@ import android.content.pm.PermissionInfo; import android.content.pm.ProviderInfo; import android.content.pm.ResolveInfo; import android.content.pm.ServiceInfo; import android.content.pm.UserInfo; import android.content.pm.ManifestDigest; import android.content.pm.UserInfo; import android.content.pm.VerifierDeviceIdentity; import android.content.res.Resources; import android.content.res.XmlResourceParser; Loading Loading @@ -1182,80 +1182,6 @@ final class ApplicationPackageManager extends PackageManager { return PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; } // Multi-user support /** * @hide */ @Override public UserInfo createUser(String name, int flags) { try { return mPM.createUser(name, flags); } catch (RemoteException e) { // Should never happen! } return null; } /** * @hide */ @Override public List<UserInfo> getUsers() { try { return mPM.getUsers(); } catch (RemoteException re) { ArrayList<UserInfo> users = new ArrayList<UserInfo>(); UserInfo primary = new UserInfo(0, "Root!", null, UserInfo.FLAG_ADMIN | UserInfo.FLAG_PRIMARY); users.add(primary); return users; } } /** * @hide */ @Override public UserInfo getUser(int userId) { try { return mPM.getUser(userId); } catch (RemoteException re) { return null; } } /** * @hide */ @Override public boolean removeUser(int id) { try { return mPM.removeUser(id); } catch (RemoteException e) { return false; } } /** * @hide */ @Override public void setUserName(int id, String name) { try { mPM.setUserName(id, name); } catch (RemoteException re) { } } /** * @hide */ @Override public void updateUserFlags(int id, int flags) { // TODO: } /** * @hide */ Loading Loading
Android.mk +1 −0 Original line number Diff line number Diff line Loading @@ -139,6 +139,7 @@ LOCAL_SRC_FILES += \ core/java/android/os/IRemoteCallback.aidl \ core/java/android/os/ISchedulingPolicyService.aidl \ core/java/android/os/IUpdateLock.aidl \ core/java/android/os/IUserManager.aidl \ core/java/android/os/IVibratorService.aidl \ core/java/android/service/dreams/IDreamManager.aidl \ core/java/android/service/dreams/IDreamService.aidl \ Loading
api/current.txt +6 −0 Original line number Diff line number Diff line Loading @@ -5386,6 +5386,7 @@ package android.content { field public static final java.lang.String TEXT_SERVICES_MANAGER_SERVICE = "textservices"; field public static final java.lang.String UI_MODE_SERVICE = "uimode"; field public static final java.lang.String USB_SERVICE = "usb"; field public static final java.lang.String USER_SERVICE = "user"; field public static final java.lang.String VIBRATOR_SERVICE = "vibrator"; field public static final java.lang.String WALLPAPER_SERVICE = "wallpaper"; field public static final java.lang.String WIFI_P2P_SERVICE = "wifip2p"; Loading Loading @@ -16448,6 +16449,11 @@ package android.os { ctor public TransactionTooLargeException(); } public class UserManager { method public java.lang.String getUserName(); method public boolean supportsMultipleUsers(); } public abstract class Vibrator { method public abstract void cancel(); method public abstract boolean hasVibrator();
cmds/pm/src/com/android/commands/pm/Pm.java +8 −3 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import com.android.internal.content.PackageHelper; import android.app.ActivityManagerNative; import android.content.ComponentName; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.ContainerEncryptionParams; import android.content.pm.FeatureInfo; Loading @@ -39,9 +40,11 @@ import android.content.res.AssetManager; import android.content.res.Resources; import android.net.Uri; import android.os.Binder; import android.os.IUserManager; import android.os.Process; import android.os.RemoteException; import android.os.ServiceManager; import android.os.UserManager; import java.io.File; import java.lang.reflect.Field; Loading @@ -59,6 +62,7 @@ import javax.crypto.spec.SecretKeySpec; public final class Pm { IPackageManager mPm; IUserManager mUm; private WeakHashMap<String, Resources> mResourceCache = new WeakHashMap<String, Resources>(); Loading @@ -82,6 +86,7 @@ public final class Pm { return; } mUm = IUserManager.Stub.asInterface(ServiceManager.getService("user")); mPm = IPackageManager.Stub.asInterface(ServiceManager.getService("package")); if (mPm == null) { System.err.println(PM_NOT_RUNNING_ERR); Loading Loading @@ -985,7 +990,7 @@ public final class Pm { } name = arg; try { if (mPm.createUser(name, 0) == null) { if (mUm.createUser(name, 0) == null) { System.err.println("Error: couldn't create User."); showUsage(); } Loading Loading @@ -1017,7 +1022,7 @@ public final class Pm { return; } try { if (!mPm.removeUser(userId)) { if (!mUm.removeUser(userId)) { System.err.println("Error: couldn't remove user."); showUsage(); } Loading @@ -1034,7 +1039,7 @@ public final class Pm { return; } try { List<UserInfo> users = mPm.getUsers(); List<UserInfo> users = mUm.getUsers(); if (users == null) { System.err.println("Error: couldn't get users"); } else { Loading
core/java/android/accounts/AccountManagerService.java +10 −6 Original line number Diff line number Diff line Loading @@ -51,6 +51,7 @@ import android.os.Message; import android.os.RemoteException; import android.os.SystemClock; import android.os.UserId; import android.os.UserManager; import android.text.TextUtils; import android.util.Log; import android.util.Pair; Loading Loading @@ -92,6 +93,7 @@ public class AccountManagerService private final Context mContext; private final PackageManager mPackageManager; private UserManager mUserManager; private HandlerThread mMessageThread; private final MessageHandler mMessageHandler; Loading Loading @@ -245,6 +247,13 @@ public class AccountManagerService initUser(0); } private UserManager getUserManager() { if (mUserManager == null) { mUserManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE); } return mUserManager; } private UserAccounts initUser(int userId) { synchronized (mUsers) { UserAccounts accounts = mUsers.get(userId); Loading Loading @@ -382,12 +391,7 @@ public class AccountManagerService } private List<UserInfo> getAllUsers() { try { return AppGlobals.getPackageManager().getUsers(); } catch (RemoteException re) { // Local to system process, shouldn't happen } return null; return getUserManager().getUsers(); } public void onServiceChanged(AuthenticatorDescription desc, boolean removed) { Loading
core/java/android/app/ApplicationPackageManager.java +1 −75 Original line number Diff line number Diff line Loading @@ -41,8 +41,8 @@ import android.content.pm.PermissionInfo; import android.content.pm.ProviderInfo; import android.content.pm.ResolveInfo; import android.content.pm.ServiceInfo; import android.content.pm.UserInfo; import android.content.pm.ManifestDigest; import android.content.pm.UserInfo; import android.content.pm.VerifierDeviceIdentity; import android.content.res.Resources; import android.content.res.XmlResourceParser; Loading Loading @@ -1182,80 +1182,6 @@ final class ApplicationPackageManager extends PackageManager { return PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; } // Multi-user support /** * @hide */ @Override public UserInfo createUser(String name, int flags) { try { return mPM.createUser(name, flags); } catch (RemoteException e) { // Should never happen! } return null; } /** * @hide */ @Override public List<UserInfo> getUsers() { try { return mPM.getUsers(); } catch (RemoteException re) { ArrayList<UserInfo> users = new ArrayList<UserInfo>(); UserInfo primary = new UserInfo(0, "Root!", null, UserInfo.FLAG_ADMIN | UserInfo.FLAG_PRIMARY); users.add(primary); return users; } } /** * @hide */ @Override public UserInfo getUser(int userId) { try { return mPM.getUser(userId); } catch (RemoteException re) { return null; } } /** * @hide */ @Override public boolean removeUser(int id) { try { return mPM.removeUser(id); } catch (RemoteException e) { return false; } } /** * @hide */ @Override public void setUserName(int id, String name) { try { mPM.setUserName(id, name); } catch (RemoteException re) { } } /** * @hide */ @Override public void updateUserFlags(int id, int flags) { // TODO: } /** * @hide */ Loading