From 1a3158b8e17cfe81e4576c9f64522704de892481 Mon Sep 17 00:00:00 2001 From: Andrew Sapperstein Date: Wed, 7 Aug 2019 15:04:35 -0700 Subject: [PATCH] Add a blacklist for preinstalled carrier apps. Allows an OEM to specify that a preinstalled carrier app, even if TelephonyManager says it should have carrier privileges, does not get granted the default permissions and does not get enabled when a compatible SIM is inserted. Bug: 138150105 Test: verified locally Change-Id: I0afec28f1f18227947c1fe9e6bb5fd0dad3b5dac --- core/res/res/values/config.xml | 4 ++++ core/res/res/values/symbols.xml | 1 + .../android/internal/telephony/CarrierAppUtils.java | 12 +++++++++--- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 4d6e7dabde81a..4b47e0335e693 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -4267,6 +4267,10 @@ (default 2MB) --> 2000000 + + + 3 diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index a4a3863146330..66e3883379f7f 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -3835,6 +3835,7 @@ + diff --git a/telephony/java/com/android/internal/telephony/CarrierAppUtils.java b/telephony/java/com/android/internal/telephony/CarrierAppUtils.java index 6498e498bfbe7..0d4fd0f620a27 100644 --- a/telephony/java/com/android/internal/telephony/CarrierAppUtils.java +++ b/telephony/java/com/android/internal/telephony/CarrierAppUtils.java @@ -21,6 +21,7 @@ import android.content.ContentResolver; import android.content.pm.ApplicationInfo; import android.content.pm.IPackageManager; import android.content.pm.PackageManager; +import android.content.res.Resources; import android.os.RemoteException; import android.permission.IPermissionManager; import android.provider.Settings; @@ -29,7 +30,9 @@ import android.util.ArrayMap; import android.util.ArraySet; import android.util.Slog; +import com.android.internal.R; import com.android.internal.annotations.VisibleForTesting; +import com.android.internal.util.ArrayUtils; import com.android.server.SystemConfig; import java.util.ArrayList; @@ -143,9 +146,12 @@ public final class CarrierAppUtils { try { for (ApplicationInfo ai : candidates) { String packageName = ai.packageName; - boolean hasPrivileges = telephonyManager != null && - telephonyManager.checkCarrierPrivilegesForPackageAnyPhone(packageName) == - TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS; + String[] restrictedCarrierApps = Resources.getSystem().getStringArray( + R.array.config_restrictedPreinstalledCarrierApps); + boolean hasPrivileges = telephonyManager != null + && telephonyManager.checkCarrierPrivilegesForPackageAnyPhone(packageName) + == TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS + && !ArrayUtils.contains(restrictedCarrierApps, packageName); // add hiddenUntilInstalled flag for carrier apps and associated apps packageManager.setSystemAppHiddenUntilInstalled(packageName, true);