OSDN Git Service

Expose APIs to analyze UIDs in UserHandle/Process.
authorJeff Davidson <jpd@google.com>
Wed, 10 Feb 2016 22:15:42 +0000 (14:15 -0800)
committerJeff Davidson <jpd@google.com>
Wed, 10 Feb 2016 23:20:33 +0000 (15:20 -0800)
Clients of the NetworkStatsManager public APIs may get UIDs belonging
to other users, and UIDs which don't actually represent applications.
These APIs allow clients to understand whether a given ID belongs to
the same user as themselves, and whether an ID represents an
application or something else (e.g. a system UID).

Change-Id: Ia56d5891521ce98e5594c41da8f9d756819deb66

api/current.txt
api/system-current.txt
api/test-current.txt
core/java/android/os/Process.java
core/java/android/os/UserHandle.java

index 8b9274c..0d031bc 100644 (file)
@@ -29061,6 +29061,7 @@ package android.os {
     method public static final int getThreadPriority(int) throws java.lang.IllegalArgumentException;
     method public static final int getUidForName(java.lang.String);
     method public static final boolean is64Bit();
+    method public static boolean isApplicationUid(int);
     method public static final void killProcess(int);
     method public static final int myPid();
     method public static final int myTid();
@@ -29241,6 +29242,7 @@ package android.os {
   public final class UserHandle implements android.os.Parcelable {
     ctor public UserHandle(android.os.Parcel);
     method public int describeContents();
+    method public static android.os.UserHandle getUserHandleForUid(int);
     method public static android.os.UserHandle readFromParcel(android.os.Parcel);
     method public void writeToParcel(android.os.Parcel, int);
     method public static void writeToParcel(android.os.UserHandle, android.os.Parcel);
index 43a787f..1af8150 100644 (file)
@@ -31354,6 +31354,7 @@ package android.os {
     method public static final int getThreadPriority(int) throws java.lang.IllegalArgumentException;
     method public static final int getUidForName(java.lang.String);
     method public static final boolean is64Bit();
+    method public static boolean isApplicationUid(int);
     method public static final void killProcess(int);
     method public static final int myPid();
     method public static final int myTid();
@@ -31580,6 +31581,7 @@ package android.os {
     ctor public UserHandle(android.os.Parcel);
     method public int describeContents();
     method public int getIdentifier();
+    method public static android.os.UserHandle getUserHandleForUid(int);
     method public deprecated boolean isOwner();
     method public boolean isSystem();
     method public static int myUserId();
index 428b359..b6b8697 100644 (file)
@@ -29070,6 +29070,7 @@ package android.os {
     method public static final int getThreadPriority(int) throws java.lang.IllegalArgumentException;
     method public static final int getUidForName(java.lang.String);
     method public static final boolean is64Bit();
+    method public static boolean isApplicationUid(int);
     method public static final void killProcess(int);
     method public static final int myPid();
     method public static final int myTid();
@@ -29251,6 +29252,7 @@ package android.os {
     ctor public UserHandle(android.os.Parcel);
     method public int describeContents();
     method public static int getAppId(int);
+    method public static android.os.UserHandle getUserHandleForUid(int);
     method public static android.os.UserHandle readFromParcel(android.os.Parcel);
     method public void writeToParcel(android.os.Parcel, int);
     method public static void writeToParcel(android.os.UserHandle, android.os.Parcel);
index b51d2df..9984755 100644 (file)
@@ -823,6 +823,16 @@ public class Process {
     }
 
     /**
+     * Returns whether the given uid belongs to an application.
+     * @param uid A kernel uid.
+     * @return Whether the uid corresponds to an application sandbox running in
+     *     a specific user.
+     */
+    public static boolean isApplicationUid(int uid) {
+        return UserHandle.isApp(uid);
+    }
+
+    /**
      * Returns whether the current process is in an isolated sandbox.
      * @hide
      */
index 24666fe..b3f4453 100644 (file)
@@ -130,6 +130,15 @@ public final class UserHandle implements Parcelable {
     }
 
     /**
+     * Returns the user for a given uid.
+     * @param uid A uid for an application running in a particular user.
+     * @return A {@link UserHandle} for that user.
+     */
+    public static UserHandle getUserHandleForUid(int uid) {
+        return of(getUserId(uid));
+    }
+
+    /**
      * Returns the user id for a given uid.
      * @hide
      */