OSDN Git Service

Fix NPE when UID has no packages.
authorJeff Sharkey <jsharkey@android.com>
Sun, 10 Jan 2016 20:15:41 +0000 (13:15 -0700)
committerJeff Sharkey <jsharkey@android.com>
Sun, 10 Jan 2016 20:15:43 +0000 (13:15 -0700)
Bug: 25224723
Change-Id: I637214666a1f02bd23474c27a285eea9152cfa9d

core/java/android/content/pm/PackageManager.java
services/core/java/com/android/server/net/NetworkPolicyManagerService.java

index c325d3d..5a9a67c 100644 (file)
@@ -3115,7 +3115,7 @@ public abstract class PackageManager {
      * @return Returns an array of one or more packages assigned to the user
      * id, or null if there are no known packages with the given id.
      */
-    public abstract String[] getPackagesForUid(int uid);
+    public abstract @Nullable String[] getPackagesForUid(int uid);
 
     /**
      * Retrieve the official name associated with a user id.  This name is
@@ -3128,7 +3128,7 @@ public abstract class PackageManager {
      * @return Returns a unique name for the given user id, or null if the
      * user id is not currently assigned.
      */
-    public abstract String getNameForUid(int uid);
+    public abstract @Nullable String getNameForUid(int uid);
 
     /**
      * Return the user id associated with a shared user name. Multiple
index 4325efd..4764300 100644 (file)
@@ -2234,9 +2234,11 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
         final String[] packages = mContext.getPackageManager().getPackagesForUid(uid);
         final int userId = UserHandle.getUserId(uid);
 
-        for (String packageName : packages) {
-            if (!mUsageStats.isAppIdle(packageName, uid, userId)) {
-                return false;
+        if (!ArrayUtils.isEmpty(packages)) {
+            for (String packageName : packages) {
+                if (!mUsageStats.isAppIdle(packageName, uid, userId)) {
+                    return false;
+                }
             }
         }
         return true;