diff options
| author | 2021-04-19 06:02:09 +0000 | |
|---|---|---|
| committer | 2021-04-19 06:02:09 +0000 | |
| commit | b8a482b0f176c2c2f9ffbb43bbb33fe25f50512d (patch) | |
| tree | 6452e3a487899b1290bb6547f60bdb612fee9786 | |
| parent | 62d25e0eb9a18a1ace9c746ca95a449d0ee9023e (diff) | |
| parent | 9ac5f83a721ad0e4fddb6e34075f95590c61108a (diff) | |
Merge "Apply package visibility to the LauncherApps#isActivityEnabled" into sc-dev
3 files changed, 36 insertions, 15 deletions
diff --git a/services/core/java/android/content/pm/PackageManagerInternal.java b/services/core/java/android/content/pm/PackageManagerInternal.java index a9eb2c110867..5dd9b0e8cbc6 100644 --- a/services/core/java/android/content/pm/PackageManagerInternal.java +++ b/services/core/java/android/content/pm/PackageManagerInternal.java @@ -825,6 +825,12 @@ public abstract class PackageManagerInternal { String packageName, int userId); /** + * Return the enabled setting for a package component (activity, receiver, service, provider). + */ + public abstract @PackageManager.EnabledState int getComponentEnabledSetting( + @NonNull ComponentName componentName, int callingUid, int userId); + + /** * Extra field name for the token of a request to enable rollback for a * package. */ diff --git a/services/core/java/com/android/server/pm/LauncherAppsService.java b/services/core/java/com/android/server/pm/LauncherAppsService.java index dd80e167f0b3..edd43af9f5b9 100644 --- a/services/core/java/com/android/server/pm/LauncherAppsService.java +++ b/services/core/java/com/android/server/pm/LauncherAppsService.java @@ -1043,22 +1043,24 @@ public class LauncherAppsService extends SystemService { return false; } + final PackageManagerInternal pmInt = + LocalServices.getService(PackageManagerInternal.class); final int callingUid = injectBinderCallingUid(); + final int state = pmInt.getComponentEnabledSetting(component, callingUid, + 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 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, PackageManager.MATCH_DIRECT_BOOT_AWARE | PackageManager.MATCH_DIRECT_BOOT_UNAWARE, diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 59039baf2764..6b364bdcc0e0 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -23616,11 +23616,17 @@ public class PackageManagerService extends IPackageManager.Stub @Override public int getComponentEnabledSetting(@NonNull ComponentName component, int userId) { - if (component == null) return COMPONENT_ENABLED_STATE_DEFAULT; - if (!mUserManager.exists(userId)) return COMPONENT_ENABLED_STATE_DISABLED; int callingUid = Binder.getCallingUid(); enforceCrossUserPermission(callingUid, userId, false /*requireFullPermission*/, false /*checkShell*/, "getComponentEnabled"); + return getComponentEnabledSettingInternal(component, callingUid, userId); + } + + private int getComponentEnabledSettingInternal(ComponentName component, int callingUid, + int userId) { + if (component == null) return COMPONENT_ENABLED_STATE_DEFAULT; + if (!mUserManager.exists(userId)) return COMPONENT_ENABLED_STATE_DISABLED; + synchronized (mLock) { try { if (shouldFilterApplicationLocked( @@ -27066,6 +27072,13 @@ public class PackageManagerService extends IPackageManager.Stub } @Override + public @PackageManager.EnabledState int getComponentEnabledSetting( + @NonNull ComponentName componentName, int callingUid, int userId) { + return PackageManagerService.this.getComponentEnabledSettingInternal(componentName, + callingUid, userId); + } + + @Override public void setEnableRollbackCode(int token, int enableRollbackCode) { PackageManagerService.this.setEnableRollbackCode(token, enableRollbackCode); } |