diff --git a/services/core/java/com/android/server/TelephonyRegistry.java b/services/core/java/com/android/server/TelephonyRegistry.java index 85787f25336fd..a172fde2e637a 100644 --- a/services/core/java/com/android/server/TelephonyRegistry.java +++ b/services/core/java/com/android/server/TelephonyRegistry.java @@ -2283,6 +2283,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { .setCallingPid(r.callerPid) .setCallingUid(r.callerUid) .setMethod("TelephonyRegistry push") + .setLogAsInfo(true) // we don't need to log an error every time we push .setMinSdkVersionForFine(minSdk) .build(); @@ -2300,6 +2301,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { .setCallingPid(r.callerPid) .setCallingUid(r.callerUid) .setMethod("TelephonyRegistry push") + .setLogAsInfo(true) // we don't need to log an error every time we push .setMinSdkVersionForCoarse(minSdk) .build(); diff --git a/telephony/java/android/telephony/LocationAccessPolicy.java b/telephony/java/android/telephony/LocationAccessPolicy.java index b9d8eb637c346..eb744f619f2e5 100644 --- a/telephony/java/android/telephony/LocationAccessPolicy.java +++ b/telephony/java/android/telephony/LocationAccessPolicy.java @@ -63,15 +63,18 @@ public final class LocationAccessPolicy { public final int callingPid; public final int minSdkVersionForCoarse; public final int minSdkVersionForFine; + public final boolean logAsInfo; public final String method; private LocationPermissionQuery(String callingPackage, int callingUid, int callingPid, - int minSdkVersionForCoarse, int minSdkVersionForFine, String method) { + int minSdkVersionForCoarse, int minSdkVersionForFine, boolean logAsInfo, + String method) { this.callingPackage = callingPackage; this.callingUid = callingUid; this.callingPid = callingPid; this.minSdkVersionForCoarse = minSdkVersionForCoarse; this.minSdkVersionForFine = minSdkVersionForFine; + this.logAsInfo = logAsInfo; this.method = method; } @@ -81,6 +84,7 @@ public final class LocationAccessPolicy { private int mCallingPid; private int mMinSdkVersionForCoarse = Integer.MAX_VALUE; private int mMinSdkVersionForFine = Integer.MAX_VALUE; + private boolean mLogAsInfo = false; private String mMethod; /** @@ -135,14 +139,27 @@ public final class LocationAccessPolicy { return this; } + /** + * If called with {@code true}, log messages will only be printed at the info level. + */ + public Builder setLogAsInfo(boolean logAsInfo) { + mLogAsInfo = logAsInfo; + return this; + } + public LocationPermissionQuery build() { return new LocationPermissionQuery(mCallingPackage, mCallingUid, - mCallingPid, mMinSdkVersionForCoarse, mMinSdkVersionForFine, mMethod); + mCallingPid, mMinSdkVersionForCoarse, mMinSdkVersionForFine, + mLogAsInfo, mMethod); } } } - private static void logError(Context context, String errorMsg) { + private static void logError(Context context, LocationPermissionQuery query, String errorMsg) { + if (query.logAsInfo) { + Log.i(TAG, errorMsg); + return; + } Log.e(TAG, errorMsg); try { if (Build.IS_DEBUGGABLE) { @@ -201,13 +218,13 @@ public final class LocationAccessPolicy { + " because we're not enforcing API " + minSdkVersion + " yet." + " Please fix this app because it will break in the future. Called from " + query.method; - logError(context, errorMsg); + logError(context, query, errorMsg); return null; } else if (!isAppAtLeastSdkVersion(context, query.callingPackage, minSdkVersion)) { String errorMsg = "Allowing " + query.callingPackage + " " + locationTypeForLog + " because it doesn't target API " + minSdkVersion + " yet." + " Please fix this app. Called from " + query.method; - logError(context, errorMsg); + logError(context, query, errorMsg); return null; } else { // If we're not allowing it due to the above two conditions, this means that the app