From 1b296161bdf64ead4336576e5b85b402c1e7d7b6 Mon Sep 17 00:00:00 2001 From: Makoto Onuki Date: Tue, 28 Jan 2020 15:56:49 -0800 Subject: [PATCH] Fix LauncherApps.isActivityEnabled() Make sure to take "setComponentEnabledSetting" into account. Change-Id: I9c3b30d8f6e158e25bca244e9265632d24409da1 Fix: 145279304 Test: atest LauncherAppsTest --- .../android/server/pm/LauncherAppsService.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/pm/LauncherAppsService.java b/services/core/java/com/android/server/pm/LauncherAppsService.java index c4ef856e3ae7b..7bb782b9fadcc 100644 --- a/services/core/java/com/android/server/pm/LauncherAppsService.java +++ b/services/core/java/com/android/server/pm/LauncherAppsService.java @@ -34,6 +34,7 @@ import android.content.pm.ApplicationInfo; import android.content.pm.ILauncherApps; import android.content.pm.IOnAppsChangedListener; import android.content.pm.IPackageInstallerCallback; +import android.content.pm.IPackageManager; import android.content.pm.LauncherApps; import android.content.pm.LauncherApps.ShortcutQuery; import android.content.pm.PackageInfo; @@ -69,7 +70,6 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.internal.content.PackageMonitor; import com.android.internal.os.BackgroundThread; import com.android.internal.util.ArrayUtils; -import com.android.internal.util.Preconditions; import com.android.server.LocalServices; import com.android.server.SystemService; import com.android.server.wm.ActivityTaskManagerInternal; @@ -119,6 +119,7 @@ public class LauncherAppsService extends SystemService { private final Context mContext; private final UserManager mUm; + private final IPackageManager mIPM; private final UserManagerInternal mUserManagerInternal; private final UsageStatsManagerInternal mUsageStatsManagerInternal; private final ActivityManagerInternal mActivityManagerInternal; @@ -136,6 +137,7 @@ public class LauncherAppsService extends SystemService { public LauncherAppsImpl(Context context) { mContext = context; + mIPM = AppGlobals.getPackageManager(); mUm = (UserManager) mContext.getSystemService(Context.USER_SERVICE); mUserManagerInternal = Objects.requireNonNull( LocalServices.getService(UserManagerInternal.class)); @@ -781,6 +783,17 @@ public class LauncherAppsService extends SystemService { final int callingUid = injectBinderCallingUid(); long ident = Binder.clearCallingIdentity(); try { + final int state = mIPM.getComponentEnabledSetting(component, user.getIdentifier()); + switch (state) { + case PackageManager.COMPONENT_ENABLED_STATE_DEFAULT: + break; // Need to check the manifest's enabled state. + case PackageManager.COMPONENT_ENABLED_STATE_ENABLED: + return true; + case PackageManager.COMPONENT_ENABLED_STATE_DISABLED: + case PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER: + case PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED: + return false; + } final PackageManagerInternal pmInt = LocalServices.getService(PackageManagerInternal.class); ActivityInfo info = pmInt.getActivityInfo(component,