summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Sapperstein <asapperstein@google.com>2019-08-07 15:04:35 -0700
committerandroid-build-team Robot <android-build-team-robot@google.com>2019-08-08 21:25:36 +0000
commite9142ca840538573867e36b039b3f156a214f88f (patch)
treeb2be6e47b87e029355de4de713685713fb39a34e
parent0e62a49e4558cc268961dc4b4809168d4df00768 (diff)
downloadbase-e9142ca840538573867e36b039b3f156a214f88f.tar.gz
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 Merged-In: I0afec28f1f18227947c1fe9e6bb5fd0dad3b5dac (cherry picked from commit e01678180770b8ded7240b5924448b8cdb697e02)
-rw-r--r--core/res/res/values/config.xml4
-rw-r--r--core/res/res/values/symbols.xml1
-rw-r--r--telephony/java/com/android/internal/telephony/CarrierAppUtils.java12
3 files changed, 14 insertions, 3 deletions
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index eb7d02bad168..0391530c4833 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -4143,6 +4143,10 @@
one bar higher than they actually are -->
<bool name="config_inflateSignalStrength">false</bool>
+ <!-- Contains a blacklist of apps that should not get pre-installed carrier app permission
+ grants, even if the UICC claims that the app should be privileged. See b/138150105 -->
+ <string-array name="config_restrictedPreinstalledCarrierApps" translatable="false"/>
+
<!-- Sharesheet: define a max number of targets per application for new shortcuts-based direct share introduced in Q -->
<integer name="config_maxShortcutTargetsPerApp">3</integer>
</resources>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 2fa68a5d8775..afb67f931e73 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -3813,6 +3813,7 @@
<java-symbol type="string" name="config_defaultSupervisionProfileOwnerComponent" />
<java-symbol type="bool" name="config_inflateSignalStrength" />
+ <java-symbol type="array" name="config_restrictedPreinstalledCarrierApps" />
<java-symbol type="drawable" name="android_logotype" />
<java-symbol type="layout" name="platlogo_layout" />
diff --git a/telephony/java/com/android/internal/telephony/CarrierAppUtils.java b/telephony/java/com/android/internal/telephony/CarrierAppUtils.java
index a1bea4d417f9..d4ed9234569b 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.provider.Settings;
import android.telephony.TelephonyManager;
@@ -28,7 +29,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;
@@ -140,9 +143,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);