diff --git a/core/java/android/os/BatteryStats.java b/core/java/android/os/BatteryStats.java index e730ad81fb921..be82d56a01088 100644 --- a/core/java/android/os/BatteryStats.java +++ b/core/java/android/os/BatteryStats.java @@ -30,6 +30,8 @@ import android.content.pm.ApplicationInfo; import android.telephony.SignalStrength; import android.text.format.DateFormat; import android.util.ArrayMap; +import android.util.MutableBoolean; +import android.util.Pair; import android.util.Printer; import android.util.SparseArray; import android.util.SparseIntArray; @@ -5317,26 +5319,28 @@ public abstract class BatteryStats implements Parcelable { } if (apps != null) { - SparseArray> uids = new SparseArray>(); + SparseArray, MutableBoolean>> uids = new SparseArray<>(); for (int i=0; i pkgs = uids.get(ai.uid); + Pair, MutableBoolean> pkgs = uids.get( + UserHandle.getAppId(ai.uid)); if (pkgs == null) { - pkgs = new ArrayList(); - uids.put(ai.uid, pkgs); + pkgs = new Pair<>(new ArrayList(), new MutableBoolean(false)); + uids.put(UserHandle.getAppId(ai.uid), pkgs); } - pkgs.add(ai.packageName); + pkgs.first.add(ai.packageName); } SparseArray uidStats = getUidStats(); final int NU = uidStats.size(); String[] lineArgs = new String[2]; for (int i=0; i pkgs = uids.get(uid); - if (pkgs != null) { - for (int j=0; j, MutableBoolean> pkgs = uids.get(uid); + if (pkgs != null && !pkgs.second.value) { + pkgs.second.value = true; + for (int j=0; j apps = mContext.getPackageManager().getInstalledApplications(0); + List apps = mContext.getPackageManager().getInstalledApplications( + PackageManager.MATCH_UNINSTALLED_PACKAGES | PackageManager.MATCH_ALL); if (isRealCheckin) { // For a real checkin, first we want to prefer to use the last complete checkin // file if there is one. diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java index e66ec3ccf63f2..fa0eb46fba6c9 100644 --- a/services/core/java/com/android/server/pm/Settings.java +++ b/services/core/java/com/android/server/pm/Settings.java @@ -4456,7 +4456,8 @@ final class Settings { } } - if ((permissionNames != null || dumpAll) && ps.pkg.requestedPermissions != null + if ((permissionNames != null || dumpAll) && ps.pkg != null + && ps.pkg.requestedPermissions != null && ps.pkg.requestedPermissions.size() > 0) { final ArrayList perms = ps.pkg.requestedPermissions; pw.print(prefix); pw.println(" requested permissions:");