diff options
| author | 2023-07-19 15:20:17 +0000 | |
|---|---|---|
| committer | 2023-07-19 15:20:17 +0000 | |
| commit | af7990b7ddf6c2fae0f7649f2663e6a850d3e86b (patch) | |
| tree | ba4e2a4225d701c5f167ce8556636887a1e74fe4 | |
| parent | 69cbc0c6fa0bffdebd35c3e8c2a71e83c91bc306 (diff) | |
| parent | a1c1f2e29f0fbb6f7ea61db445906c4bfc5e4f33 (diff) | |
Merge "[pm] do not stop system apps with disabled a launcher activity" into main
| -rw-r--r-- | services/core/java/com/android/server/pm/InstallPackageHelper.java | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/pm/InstallPackageHelper.java b/services/core/java/com/android/server/pm/InstallPackageHelper.java index ead26cc0cf05..134b041cb242 100644 --- a/services/core/java/com/android/server/pm/InstallPackageHelper.java +++ b/services/core/java/com/android/server/pm/InstallPackageHelper.java @@ -4311,7 +4311,8 @@ final class InstallPackageHelper { // - It's an APEX or overlay package since stopped state does not affect them. // - It is enumerated with a <initial-package-state> tag having the stopped attribute // set to false - // - It doesn't have a launcher entry which means the user doesn't have a way to unstop it + // - It doesn't have an enabled and exported launcher activity, which means the user + // wouldn't have a way to un-stop it final boolean isApexPkg = (scanFlags & SCAN_AS_APEX) != 0; if (mPm.mShouldStopSystemPackagesByDefault && scanSystemPartition @@ -4337,7 +4338,11 @@ final class InstallPackageHelper { categories.add(Intent.CATEGORY_LAUNCHER); final List<ParsedActivity> activities = parsedPackage.getActivities(); for (int indexActivity = 0; indexActivity < activities.size(); indexActivity++) { - final List<ParsedIntentInfo> intents = activities.get(indexActivity).getIntents(); + final ParsedActivity activity = activities.get(indexActivity); + if (!activity.isEnabled() || !activity.isExported()) { + continue; + } + final List<ParsedIntentInfo> intents = activity.getIntents(); for (int indexIntent = 0; indexIntent < intents.size(); indexIntent++) { final IntentFilter intentFilter = intents.get(indexIntent).getIntentFilter(); if (intentFilter != null && intentFilter.matchCategories(categories) == null) { |