Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c954c145 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Do not use hidden putIntForUser"

parents 3b0b4dff b46d6711
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -20125,8 +20125,7 @@ public class PackageManagerService extends IPackageManager.Stub
        // Disable any carrier apps. We do this very early in boot to prevent the apps from being
        // disabled after already being started.
        CarrierAppUtils.disableCarrierAppsUntilPrivileged(mContext.getOpPackageName(), this,
                mPermissionManagerService, mContext.getContentResolver(),
                UserHandle.USER_SYSTEM);
                mPermissionManagerService, UserHandle.USER_SYSTEM, mContext);
        disableSkuSpecificApps();
+17 −8
Original line number Diff line number Diff line
@@ -18,11 +18,13 @@ package com.android.internal.telephony;

import android.annotation.Nullable;
import android.content.ContentResolver;
import android.content.Context;
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.os.UserHandle;
import android.permission.IPermissionManager;
import android.provider.Settings;
import com.android.telephony.Rlog;
@@ -76,7 +78,7 @@ public final class CarrierAppUtils {
     */
    public static synchronized void disableCarrierAppsUntilPrivileged(String callingPackage,
            IPackageManager packageManager, IPermissionManager permissionManager,
            TelephonyManager telephonyManager, ContentResolver contentResolver, int userId) {
            TelephonyManager telephonyManager, int userId, Context context) {
        if (DEBUG) {
            Rlog.d(TAG, "disableCarrierAppsUntilPrivileged");
        }
@@ -85,6 +87,7 @@ public final class CarrierAppUtils {
                config.getDisabledUntilUsedPreinstalledCarrierApps();
        ArrayMap<String, List<String>> systemCarrierAssociatedAppsDisabledUntilUsed =
                config.getDisabledUntilUsedPreinstalledCarrierAssociatedApps();
        ContentResolver contentResolver = getContentResolverForUser(context, userId);
        disableCarrierAppsUntilPrivileged(callingPackage, packageManager, permissionManager,
                telephonyManager, contentResolver, userId, systemCarrierAppsDisabledUntilUsed,
                systemCarrierAssociatedAppsDisabledUntilUsed);
@@ -102,8 +105,8 @@ public final class CarrierAppUtils {
     * Manager can kill it, and this can lead to crashes as the app is in an unexpected state.
     */
    public static synchronized void disableCarrierAppsUntilPrivileged(String callingPackage,
            IPackageManager packageManager, IPermissionManager permissionManager,
            ContentResolver contentResolver, int userId) {
            IPackageManager packageManager, IPermissionManager permissionManager, int userId,
            Context context) {
        if (DEBUG) {
            Rlog.d(TAG, "disableCarrierAppsUntilPrivileged");
        }
@@ -114,15 +117,23 @@ public final class CarrierAppUtils {

        ArrayMap<String, List<String>> systemCarrierAssociatedAppsDisabledUntilUsed =
                config.getDisabledUntilUsedPreinstalledCarrierAssociatedApps();
        ContentResolver contentResolver = getContentResolverForUser(context, userId);
        disableCarrierAppsUntilPrivileged(callingPackage, packageManager, permissionManager,
                null /* telephonyManager */, contentResolver, userId,
                systemCarrierAppsDisabledUntilUsed, systemCarrierAssociatedAppsDisabledUntilUsed);
    }

    private static ContentResolver getContentResolverForUser(Context context, int userId) {
        Context userContext = context.createContextAsUser(UserHandle.getUserHandleForUid(userId),
                0);
        return userContext.getContentResolver();
    }

    /**
     * Disable carrier apps until they are privileged
     * Must be public b/c framework unit tests can't access package-private methods.
     */
    // Must be public b/c framework unit tests can't access package-private methods.
    @VisibleForTesting
    public static void disableCarrierAppsUntilPrivileged(String callingPackage,
            IPackageManager packageManager, IPermissionManager permissionManager,
@@ -142,9 +153,8 @@ public final class CarrierAppUtils {
                systemCarrierAssociatedAppsDisabledUntilUsed);

        List<String> enabledCarrierPackages = new ArrayList<>();

        boolean hasRunOnce = Settings.Secure.getIntForUser(
                contentResolver, Settings.Secure.CARRIER_APPS_HANDLED, 0, userId) == 1;
        boolean hasRunOnce = Settings.Secure.getInt(contentResolver,
                Settings.Secure.CARRIER_APPS_HANDLED, 0) == 1;

        try {
            for (ApplicationInfo ai : candidates) {
@@ -259,8 +269,7 @@ public final class CarrierAppUtils {

            // Mark the execution so we do not disable apps again.
            if (!hasRunOnce) {
                Settings.Secure.putIntForUser(
                        contentResolver, Settings.Secure.CARRIER_APPS_HANDLED, 1, userId);
                Settings.Secure.putInt(contentResolver, Settings.Secure.CARRIER_APPS_HANDLED, 1);
            }

            if (!enabledCarrierPackages.isEmpty()) {