From 5fb47f3ed745c27ded5f901966aeefe077d98b3f Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Mon, 11 Apr 2016 13:02:08 -0700 Subject: [PATCH] Fix issue #28118215: Crash during system boot due to null carrier apps Change-Id: I607ccc4baf769c2fb78b0d745bf9fddc3d240855 --- .../com/android/server/usage/UsageStatsService.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/services/usage/java/com/android/server/usage/UsageStatsService.java b/services/usage/java/com/android/server/usage/UsageStatsService.java index 0aeb96f521817..ecfeff92ac9f9 100644 --- a/services/usage/java/com/android/server/usage/UsageStatsService.java +++ b/services/usage/java/com/android/server/usage/UsageStatsService.java @@ -152,6 +152,7 @@ public class UsageStatsService extends SystemService implements private ArrayList mPackageAccessListeners = new ArrayList<>(); + private boolean mHaveCarrierPrivilegedApps; private List mCarrierPrivilegedApps; public UsageStatsService(Context context) { @@ -931,11 +932,14 @@ public class UsageStatsService extends SystemService implements private boolean isCarrierApp(String packageName) { synchronized (mLock) { - if (mCarrierPrivilegedApps == null) { + if (!mHaveCarrierPrivilegedApps) { fetchCarrierPrivilegedAppsLocked(); } + if (mCarrierPrivilegedApps != null) { + return mCarrierPrivilegedApps.contains(packageName); + } + return false; } - return mCarrierPrivilegedApps.contains(packageName); } void clearCarrierPrivilegedApps() { @@ -943,6 +947,7 @@ public class UsageStatsService extends SystemService implements Slog.i(TAG, "Clearing carrier privileged apps list"); } synchronized (mLock) { + mHaveCarrierPrivilegedApps = false; mCarrierPrivilegedApps = null; // Need to be refetched. } } @@ -951,6 +956,7 @@ public class UsageStatsService extends SystemService implements TelephonyManager telephonyManager = getContext().getSystemService(TelephonyManager.class); mCarrierPrivilegedApps = telephonyManager.getPackagesWithCarrierPrivileges(); + mHaveCarrierPrivilegedApps = true; if (DEBUG) { Slog.d(TAG, "apps with carrier privilege " + mCarrierPrivilegedApps); } @@ -1024,7 +1030,8 @@ public class UsageStatsService extends SystemService implements } pw.println(); - pw.println("Carrier privileged apps: " + mCarrierPrivilegedApps); + pw.println("Carrier privileged apps (have=" + mHaveCarrierPrivilegedApps + + "): " + mCarrierPrivilegedApps); pw.println(); pw.println("Settings:");