Merge "Migrate CarrierAppUtils to use SystemConfigManager" into rvc-dev
This commit is contained in:
@@ -22,21 +22,21 @@ import android.content.Context;
|
|||||||
import android.content.pm.ApplicationInfo;
|
import android.content.pm.ApplicationInfo;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
|
import android.os.SystemConfigManager;
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
import android.permission.PermissionManager;
|
import android.permission.PermissionManager;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
import android.util.ArrayMap;
|
import android.util.ArrayMap;
|
||||||
import android.util.ArraySet;
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import com.android.internal.annotations.VisibleForTesting;
|
import com.android.internal.annotations.VisibleForTesting;
|
||||||
import com.android.internal.telephony.util.ArrayUtils;
|
import com.android.internal.telephony.util.ArrayUtils;
|
||||||
import com.android.server.SystemConfig;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Utilities for handling carrier applications.
|
* Utilities for handling carrier applications.
|
||||||
@@ -53,19 +53,19 @@ public final class CarrierAppUtils {
|
|||||||
* Handle preinstalled carrier apps which should be disabled until a matching SIM is inserted.
|
* Handle preinstalled carrier apps which should be disabled until a matching SIM is inserted.
|
||||||
*
|
*
|
||||||
* Evaluates the list of applications in
|
* Evaluates the list of applications in
|
||||||
* {@link SystemConfig#getDisabledUntilUsedPreinstalledCarrierApps()}. We want to disable each
|
* {@link SystemConfigManager#getDisabledUntilUsedPreinstalledCarrierApps()}. We want to disable
|
||||||
* such application which is present on the system image until the user inserts a SIM which
|
* each such application which is present on the system image until the user inserts a SIM
|
||||||
* causes that application to gain carrier privilege (indicating a "match"), without interfering
|
* which causes that application to gain carrier privilege (indicating a "match"), without
|
||||||
* with the user if they opt to enable/disable the app explicitly.
|
* interfering with the user if they opt to enable/disable the app explicitly.
|
||||||
*
|
*
|
||||||
* So, for each such app, we either disable until used IFF the app is not carrier privileged AND
|
* So, for each such app, we either disable until used IFF the app is not carrier privileged AND
|
||||||
* in the default state (e.g. not explicitly DISABLED/DISABLED_BY_USER/ENABLED), or we enable if
|
* in the default state (e.g. not explicitly DISABLED/DISABLED_BY_USER/ENABLED), or we enable if
|
||||||
* the app is carrier privileged and in either the default state or DISABLED_UNTIL_USED.
|
* the app is carrier privileged and in either the default state or DISABLED_UNTIL_USED.
|
||||||
*
|
*
|
||||||
* In addition, there is a list of carrier-associated applications in
|
* In addition, there is a list of carrier-associated applications in
|
||||||
* {@link SystemConfig#getDisabledUntilUsedPreinstalledCarrierAssociatedApps}. Each app in this
|
* {@link SystemConfigManager#getDisabledUntilUsedPreinstalledCarrierAssociatedApps}. Each app
|
||||||
* list is associated with a carrier app. When the given carrier app is enabled/disabled per the
|
* in this list is associated with a carrier app. When the given carrier app is enabled/disabled
|
||||||
* above, the associated applications are enabled/disabled to match.
|
* per the above, the associated applications are enabled/disabled to match.
|
||||||
*
|
*
|
||||||
* When enabling a carrier app we also grant it default permissions.
|
* When enabling a carrier app we also grant it default permissions.
|
||||||
*
|
*
|
||||||
@@ -78,10 +78,10 @@ public final class CarrierAppUtils {
|
|||||||
if (DEBUG) {
|
if (DEBUG) {
|
||||||
Log.d(TAG, "disableCarrierAppsUntilPrivileged");
|
Log.d(TAG, "disableCarrierAppsUntilPrivileged");
|
||||||
}
|
}
|
||||||
SystemConfig config = SystemConfig.getInstance();
|
SystemConfigManager config = context.getSystemService(SystemConfigManager.class);
|
||||||
ArraySet<String> systemCarrierAppsDisabledUntilUsed =
|
Set<String> systemCarrierAppsDisabledUntilUsed =
|
||||||
config.getDisabledUntilUsedPreinstalledCarrierApps();
|
config.getDisabledUntilUsedPreinstalledCarrierApps();
|
||||||
ArrayMap<String, List<String>> systemCarrierAssociatedAppsDisabledUntilUsed =
|
Map<String, List<String>> systemCarrierAssociatedAppsDisabledUntilUsed =
|
||||||
config.getDisabledUntilUsedPreinstalledCarrierAssociatedApps();
|
config.getDisabledUntilUsedPreinstalledCarrierAssociatedApps();
|
||||||
ContentResolver contentResolver = getContentResolverForUser(context, userId);
|
ContentResolver contentResolver = getContentResolverForUser(context, userId);
|
||||||
disableCarrierAppsUntilPrivileged(callingPackage, telephonyManager, contentResolver,
|
disableCarrierAppsUntilPrivileged(callingPackage, telephonyManager, contentResolver,
|
||||||
@@ -105,11 +105,11 @@ public final class CarrierAppUtils {
|
|||||||
if (DEBUG) {
|
if (DEBUG) {
|
||||||
Log.d(TAG, "disableCarrierAppsUntilPrivileged");
|
Log.d(TAG, "disableCarrierAppsUntilPrivileged");
|
||||||
}
|
}
|
||||||
SystemConfig config = SystemConfig.getInstance();
|
SystemConfigManager config = context.getSystemService(SystemConfigManager.class);
|
||||||
ArraySet<String> systemCarrierAppsDisabledUntilUsed =
|
Set<String> systemCarrierAppsDisabledUntilUsed =
|
||||||
config.getDisabledUntilUsedPreinstalledCarrierApps();
|
config.getDisabledUntilUsedPreinstalledCarrierApps();
|
||||||
|
|
||||||
ArrayMap<String, List<String>> systemCarrierAssociatedAppsDisabledUntilUsed =
|
Map<String, List<String>> systemCarrierAssociatedAppsDisabledUntilUsed =
|
||||||
config.getDisabledUntilUsedPreinstalledCarrierAssociatedApps();
|
config.getDisabledUntilUsedPreinstalledCarrierAssociatedApps();
|
||||||
ContentResolver contentResolver = getContentResolverForUser(context, userId);
|
ContentResolver contentResolver = getContentResolverForUser(context, userId);
|
||||||
disableCarrierAppsUntilPrivileged(callingPackage, null /* telephonyManager */,
|
disableCarrierAppsUntilPrivileged(callingPackage, null /* telephonyManager */,
|
||||||
@@ -139,8 +139,8 @@ public final class CarrierAppUtils {
|
|||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
public static void disableCarrierAppsUntilPrivileged(String callingPackage,
|
public static void disableCarrierAppsUntilPrivileged(String callingPackage,
|
||||||
@Nullable TelephonyManager telephonyManager, ContentResolver contentResolver,
|
@Nullable TelephonyManager telephonyManager, ContentResolver contentResolver,
|
||||||
int userId, ArraySet<String> systemCarrierAppsDisabledUntilUsed,
|
int userId, Set<String> systemCarrierAppsDisabledUntilUsed,
|
||||||
ArrayMap<String, List<String>> systemCarrierAssociatedAppsDisabledUntilUsed,
|
Map<String, List<String>> systemCarrierAssociatedAppsDisabledUntilUsed,
|
||||||
Context context) {
|
Context context) {
|
||||||
PackageManager packageManager = context.getPackageManager();
|
PackageManager packageManager = context.getPackageManager();
|
||||||
PermissionManager permissionManager =
|
PermissionManager permissionManager =
|
||||||
@@ -340,26 +340,22 @@ public final class CarrierAppUtils {
|
|||||||
*/
|
*/
|
||||||
public static List<ApplicationInfo> getDefaultCarrierAppCandidates(
|
public static List<ApplicationInfo> getDefaultCarrierAppCandidates(
|
||||||
int userId, Context context) {
|
int userId, Context context) {
|
||||||
ArraySet<String> systemCarrierAppsDisabledUntilUsed =
|
Set<String> systemCarrierAppsDisabledUntilUsed =
|
||||||
SystemConfig.getInstance().getDisabledUntilUsedPreinstalledCarrierApps();
|
context.getSystemService(SystemConfigManager.class)
|
||||||
|
.getDisabledUntilUsedPreinstalledCarrierApps();
|
||||||
return getDefaultCarrierAppCandidatesHelper(userId, systemCarrierAppsDisabledUntilUsed,
|
return getDefaultCarrierAppCandidatesHelper(userId, systemCarrierAppsDisabledUntilUsed,
|
||||||
context);
|
context);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<ApplicationInfo> getDefaultCarrierAppCandidatesHelper(
|
private static List<ApplicationInfo> getDefaultCarrierAppCandidatesHelper(
|
||||||
int userId, ArraySet<String> systemCarrierAppsDisabledUntilUsed, Context context) {
|
int userId, Set<String> systemCarrierAppsDisabledUntilUsed, Context context) {
|
||||||
if (systemCarrierAppsDisabledUntilUsed == null) {
|
if (systemCarrierAppsDisabledUntilUsed == null
|
||||||
|
|| systemCarrierAppsDisabledUntilUsed.isEmpty()) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
int size = systemCarrierAppsDisabledUntilUsed.size();
|
List<ApplicationInfo> apps = new ArrayList<>(systemCarrierAppsDisabledUntilUsed.size());
|
||||||
if (size == 0) {
|
for (String packageName : systemCarrierAppsDisabledUntilUsed) {
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
List<ApplicationInfo> apps = new ArrayList<>(size);
|
|
||||||
for (int i = 0; i < size; i++) {
|
|
||||||
String packageName = systemCarrierAppsDisabledUntilUsed.valueAt(i);
|
|
||||||
ApplicationInfo ai =
|
ApplicationInfo ai =
|
||||||
getApplicationInfoIfSystemApp(userId, packageName, context);
|
getApplicationInfoIfSystemApp(userId, packageName, context);
|
||||||
if (ai != null) {
|
if (ai != null) {
|
||||||
@@ -370,14 +366,14 @@ public final class CarrierAppUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static Map<String, List<ApplicationInfo>> getDefaultCarrierAssociatedAppsHelper(
|
private static Map<String, List<ApplicationInfo>> getDefaultCarrierAssociatedAppsHelper(
|
||||||
int userId, ArrayMap<String, List<String>> systemCarrierAssociatedAppsDisabledUntilUsed,
|
int userId, Map<String, List<String>> systemCarrierAssociatedAppsDisabledUntilUsed,
|
||||||
Context context) {
|
Context context) {
|
||||||
int size = systemCarrierAssociatedAppsDisabledUntilUsed.size();
|
int size = systemCarrierAssociatedAppsDisabledUntilUsed.size();
|
||||||
Map<String, List<ApplicationInfo>> associatedApps = new ArrayMap<>(size);
|
Map<String, List<ApplicationInfo>> associatedApps = new ArrayMap<>(size);
|
||||||
for (int i = 0; i < size; i++) {
|
for (Map.Entry<String, List<String>> entry
|
||||||
String carrierAppPackage = systemCarrierAssociatedAppsDisabledUntilUsed.keyAt(i);
|
: systemCarrierAssociatedAppsDisabledUntilUsed.entrySet()) {
|
||||||
List<String> associatedAppPackages =
|
String carrierAppPackage = entry.getKey();
|
||||||
systemCarrierAssociatedAppsDisabledUntilUsed.valueAt(i);
|
List<String> associatedAppPackages = entry.getValue();
|
||||||
for (int j = 0; j < associatedAppPackages.size(); j++) {
|
for (int j = 0; j < associatedAppPackages.size(); j++) {
|
||||||
ApplicationInfo ai =
|
ApplicationInfo ai =
|
||||||
getApplicationInfoIfSystemApp(
|
getApplicationInfoIfSystemApp(
|
||||||
|
|||||||
Reference in New Issue
Block a user