From efdf00bff9bd7652b0f386052c99c930439addbc Mon Sep 17 00:00:00 2001 From: Manjeet Rulhania Date: Fri, 25 Mar 2022 18:04:47 +0000 Subject: [PATCH] Fix printing duplicate logs to save on battery Adding state to remember if a log for missing activity manager is already printed or not. Bug: 202092164 Test: Manual Change-Id: Ia945a7396d06f7e8a3fc12359583970faed06a72 --- core/java/android/permission/PermissionManager.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/core/java/android/permission/PermissionManager.java b/core/java/android/permission/PermissionManager.java index 69728756d7450..6b540d72bba00 100644 --- a/core/java/android/permission/PermissionManager.java +++ b/core/java/android/permission/PermissionManager.java @@ -1486,6 +1486,10 @@ public final class PermissionManager { } } + // Only warn once for assuming that root or system UID has a permission + // to reduce duplicate logcat output. + private static volatile boolean sShouldWarnMissingActivityManager = true; + /* @hide */ private static int checkPermissionUncached(@Nullable String permission, int pid, int uid) { final IActivityManager am = ActivityManager.getService(); @@ -1495,8 +1499,11 @@ public final class PermissionManager { // permission this is. final int appId = UserHandle.getAppId(uid); if (appId == Process.ROOT_UID || appId == Process.SYSTEM_UID) { - Slog.w(LOG_TAG, "Missing ActivityManager; assuming " + uid + " holds " - + permission); + if (sShouldWarnMissingActivityManager) { + Slog.w(LOG_TAG, "Missing ActivityManager; assuming " + uid + " holds " + + permission); + sShouldWarnMissingActivityManager = false; + } return PackageManager.PERMISSION_GRANTED; } Slog.w(LOG_TAG, "Missing ActivityManager; assuming " + uid + " does not hold " @@ -1504,6 +1511,7 @@ public final class PermissionManager { return PackageManager.PERMISSION_DENIED; } try { + sShouldWarnMissingActivityManager = true; return am.checkPermission(permission, pid, uid); } catch (RemoteException e) { throw e.rethrowFromSystemServer();