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

Commit e6d30a63 authored by Grace Jia's avatar Grace Jia Committed by Automerger Merge Worker
Browse files

Fix wrong package availability check for multi-user. am: e732acd9

Original change: https://android-review.googlesource.com/c/platform/packages/services/Telecomm/+/1894495

Change-Id: Ie8b3c796be2ce2270ce33037a1c262518804bf7b
parents 80ecfa97 e732acd9
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -1696,11 +1696,16 @@ public class InCallController extends CallsManagerListenerBase implements
        }

        PackageManager packageManager = mContext.getPackageManager();
        Context userContext = mContext.createContextAsUser(mCallsManager.getCurrentUserHandle(),
                0 /* flags */);
        PackageManager userPackageManager = userContext != null ?
                userContext.getPackageManager() : packageManager;
        for (ResolveInfo entry : packageManager.queryIntentServicesAsUser(
                serviceIntent,
                PackageManager.GET_META_DATA | PackageManager.MATCH_DISABLED_COMPONENTS,
                mCallsManager.getCurrentUserHandle().getIdentifier())) {
            ServiceInfo serviceInfo = entry.serviceInfo;

            if (serviceInfo != null) {
                boolean isExternalCallsSupported = serviceInfo.metaData != null &&
                        serviceInfo.metaData.getBoolean(
@@ -1718,7 +1723,7 @@ public class InCallController extends CallsManagerListenerBase implements
                }

                boolean isEnabled = isServiceEnabled(foundComponentName,
                        serviceInfo, packageManager);
                        serviceInfo, userPackageManager);
                boolean isRequestedType;
                if (requestedType == IN_CALL_SERVICE_TYPE_INVALID) {
                    isRequestedType = true;
@@ -1737,6 +1742,10 @@ public class InCallController extends CallsManagerListenerBase implements

    private boolean isServiceEnabled(ComponentName componentName,
            ServiceInfo serviceInfo, PackageManager packageManager) {
        if (packageManager == null) {
            return serviceInfo.isEnabled();
        }

        int componentEnabledState = packageManager.getComponentEnabledSetting(componentName);

        if (componentEnabledState == PackageManager.COMPONENT_ENABLED_STATE_ENABLED) {
+5 −0
Original line number Diff line number Diff line
@@ -122,6 +122,11 @@ public class ComponentContextFixture implements TestFixture<Context> {
            return mMainExecutor;
        }

        @Override
        public Context createContextAsUser(UserHandle userHandle, int flags) {
            return this;
        }

        @Override
        public String getPackageName() {
            return "com.android.server.telecom.tests";