diff options
4 files changed, 27 insertions, 15 deletions
diff --git a/core/java/android/os/UserManager.java b/core/java/android/os/UserManager.java index 138be8743f98..b7c049a478e5 100644 --- a/core/java/android/os/UserManager.java +++ b/core/java/android/os/UserManager.java @@ -595,14 +595,24 @@ public class UserManager { public boolean isSystemUser() { return UserHandle.myUserId() == UserHandle.USER_SYSTEM; } + /** * @hide * Returns whether the caller is running as an admin user. There can be more than one admin * user. */ public boolean isAdminUser() { - UserInfo user = getUserInfo(UserHandle.myUserId()); - return user != null ? user.isAdmin() : false; + return isUserAdmin(UserHandle.myUserId()); + } + + /** + * @hide + * Returns whether the provided user is an admin user. There can be more than one admin + * user. + */ + public boolean isUserAdmin(int userId) { + UserInfo user = getUserInfo(userId); + return user != null && user.isAdmin(); } /** @@ -1070,7 +1080,7 @@ public class UserManager { */ public List<UserHandle> getUserProfiles() { ArrayList<UserHandle> profiles = new ArrayList<UserHandle>(); - List<UserInfo> users = new ArrayList<UserInfo>(); + List<UserInfo> users; try { users = mService.getProfiles(UserHandle.myUserId(), true /* enabledOnly */); } catch (RemoteException re) { diff --git a/packages/SettingsLib/src/com/android/settingslib/TetherUtil.java b/packages/SettingsLib/src/com/android/settingslib/TetherUtil.java index 58e5e29adeee..096a5c43e12c 100644 --- a/packages/SettingsLib/src/com/android/settingslib/TetherUtil.java +++ b/packages/SettingsLib/src/com/android/settingslib/TetherUtil.java @@ -23,7 +23,7 @@ import android.content.res.Resources; import android.net.ConnectivityManager; import android.net.wifi.WifiManager; import android.os.SystemProperties; -import android.os.UserHandle; +import android.os.UserManager; import android.provider.Settings; public class TetherUtil { @@ -99,8 +99,9 @@ public class TetherUtil { public static boolean isTetheringSupported(Context context) { final ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); - final boolean isSecondaryUser = ActivityManager.getCurrentUser() != UserHandle.USER_OWNER; - return !isSecondaryUser && cm.isTetheringSupported(); + final boolean isAdminUser = + UserManager.get(context).isUserAdmin(ActivityManager.getCurrentUser()); + return isAdminUser && cm.isTetheringSupported(); } } diff --git a/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java b/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java index 9eb7d0ebfcc3..c9a5f8f68606 100644 --- a/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java +++ b/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java @@ -30,6 +30,7 @@ import android.content.pm.PackageManager; import android.content.pm.PackageStats; import android.content.pm.ParceledListSlice; import android.content.pm.ResolveInfo; +import android.content.pm.UserInfo; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Handler; @@ -88,7 +89,7 @@ public class ApplicationsState { final PackageManager mPm; final IPackageManager mIpm; final UserManager mUm; - final int mOwnerRetrieveFlags; + final int mAdminRetrieveFlags; final int mRetrieveFlags; PackageIntentReceiver mPackageIntentReceiver; @@ -131,7 +132,7 @@ public class ApplicationsState { mBackgroundHandler = new BackgroundHandler(mThread.getLooper()); // Only the owner can see all apps. - mOwnerRetrieveFlags = PackageManager.GET_UNINSTALLED_PACKAGES | + mAdminRetrieveFlags = PackageManager.GET_UNINSTALLED_PACKAGES | PackageManager.GET_DISABLED_COMPONENTS | PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS; mRetrieveFlags = PackageManager.GET_DISABLED_COMPONENTS | @@ -181,17 +182,17 @@ public class ApplicationsState { mPackageIntentReceiver.registerReceiver(); } mApplications = new ArrayList<ApplicationInfo>(); - for (UserHandle user : mUm.getUserProfiles()) { + for (UserInfo user : mUm.getProfiles(UserHandle.myUserId())) { try { // If this user is new, it needs a map created. - if (mEntriesMap.indexOfKey(user.getIdentifier()) < 0) { - mEntriesMap.put(user.getIdentifier(), new HashMap<String, AppEntry>()); + if (mEntriesMap.indexOfKey(user.id) < 0) { + mEntriesMap.put(user.id, new HashMap<String, AppEntry>()); } @SuppressWarnings("unchecked") ParceledListSlice<ApplicationInfo> list = mIpm.getInstalledApplications( - user.isOwner() ? mOwnerRetrieveFlags : mRetrieveFlags, - user.getIdentifier()); + user.isAdmin() ? mAdminRetrieveFlags : mRetrieveFlags, + user.id); mApplications.addAll(list.getList()); } catch (RemoteException e) { } @@ -363,7 +364,7 @@ public class ApplicationsState { return; } ApplicationInfo info = mIpm.getApplicationInfo(pkgName, - userId == UserHandle.USER_OWNER ? mOwnerRetrieveFlags : mRetrieveFlags, + mUm.isUserAdmin(userId) ? mAdminRetrieveFlags : mRetrieveFlags, userId); if (info == null) { return; diff --git a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageMeasurement.java b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageMeasurement.java index 5d3d1206f4e8..9790e6408cc2 100644 --- a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageMeasurement.java +++ b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageMeasurement.java @@ -314,7 +314,7 @@ public class StorageMeasurement { } else { Intent service = new Intent().setComponent(DEFAULT_CONTAINER_COMPONENT); mContext.bindServiceAsUser(service, mDefContainerConn, - Context.BIND_AUTO_CREATE, UserHandle.OWNER); + Context.BIND_AUTO_CREATE, UserHandle.SYSTEM); } } break; |