summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/app/ActivityManager.java8
-rw-r--r--core/java/android/os/UserHandle.java7
-rw-r--r--core/java/android/os/UserManager.java14
-rw-r--r--services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java3
4 files changed, 29 insertions, 3 deletions
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java
index bc54055d7530..3e03893f5f64 100644
--- a/core/java/android/app/ActivityManager.java
+++ b/core/java/android/app/ActivityManager.java
@@ -18,12 +18,14 @@ package android.app;
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.annotation.SystemApi;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Point;
import android.os.BatteryStats;
import android.os.IBinder;
import android.os.ParcelFileDescriptor;
+
import com.android.internal.app.ProcessStats;
import com.android.internal.os.TransferPipe;
import com.android.internal.util.FastPrintWriter;
@@ -2464,7 +2466,11 @@ public class ActivityManager {
}
}
- /** @hide */
+ /**
+ * Gets the userId of the current foreground user. Requires system permissions.
+ * @hide
+ */
+ @SystemApi
public static int getCurrentUser() {
UserInfo ui;
try {
diff --git a/core/java/android/os/UserHandle.java b/core/java/android/os/UserHandle.java
index 5ce9d5c98acb..0ff5f6a26092 100644
--- a/core/java/android/os/UserHandle.java
+++ b/core/java/android/os/UserHandle.java
@@ -234,6 +234,7 @@ public final class UserHandle implements Parcelable {
* @return user id of the current process
* @hide
*/
+ @SystemApi
public static final int myUserId() {
return getUserId(Process.myUid());
}
@@ -253,7 +254,11 @@ public final class UserHandle implements Parcelable {
mHandle = h;
}
- /** @hide */
+ /**
+ * Returns the userId stored in this UserHandle.
+ * @hide
+ */
+ @SystemApi
public int getIdentifier() {
return mHandle;
}
diff --git a/core/java/android/os/UserManager.java b/core/java/android/os/UserManager.java
index f7936675b748..59220e1d0a37 100644
--- a/core/java/android/os/UserManager.java
+++ b/core/java/android/os/UserManager.java
@@ -15,6 +15,7 @@
*/
package android.os;
+import android.annotation.SystemApi;
import android.app.ActivityManager;
import android.app.ActivityManagerNative;
import android.content.Context;
@@ -424,6 +425,19 @@ public class UserManager {
}
/**
+ * Checks if the calling app is running in a managed profile.
+ * Requires {@link android.Manifest.permission#MANAGE_USERS} permission.
+ *
+ * @return whether the caller is in a managed profile.
+ * @hide
+ */
+ @SystemApi
+ public boolean isManagedProfile() {
+ UserInfo user = getUserInfo(UserHandle.myUserId());
+ return user != null ? user.isManagedProfile() : false;
+ }
+
+ /**
* Return whether the given user is actively running. This means that
* the user is in the "started" state, not "stopped" -- it is currently
* allowed to run code through scheduled alarms, receiving broadcasts,
diff --git a/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java b/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java
index 6e1373204c47..a0b8c94fa658 100644
--- a/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java
@@ -125,7 +125,8 @@ public class UserManagerTest extends AndroidTestCase {
UserInfo.FLAG_MANAGED_PROFILE, UserHandle.USER_OWNER);
assertNotNull(userInfo1);
assertNull(userInfo2);
-
+ // Verify that current user is not a managed profile
+ assertFalse(mUserManager.isManagedProfile());
// Cleanup
removeUser(userInfo1.id);
}