diff options
| author | 2024-03-06 16:52:02 +0000 | |
|---|---|---|
| committer | 2024-03-06 16:52:02 +0000 | |
| commit | e5ba94cf5db775cf58f51dee11be1ac12ce01973 (patch) | |
| tree | ef7d88c9485eeeb168180af8370ad3e94a07fba4 | |
| parent | 09d30a2bffa7253dd162fc19d3129e23939a19a1 (diff) | |
| parent | 285806a74817887d311c0b450c8124c2904e5579 (diff) | |
Merge "Bugfix: set appIcon and appLabel fields on draft sessions created for unarchival." into main
| -rw-r--r-- | core/res/res/values/strings.xml | 2 | ||||
| -rw-r--r-- | core/res/res/values/symbols.xml | 2 | ||||
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageArchiver.java | 15 |
3 files changed, 16 insertions, 3 deletions
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index 59066eb83f1c..238772f5961e 100644 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -6434,4 +6434,6 @@ ul.</string> <string name="satellite_notification_open_message">Open Messages</string> <!-- Invoke Satellite setting activity of Settings --> <string name="satellite_notification_how_it_works">How it works</string> + <!-- Initial/System provided label shown for an app which gets unarchived. [CHAR LIMIT=64]. --> + <string name="unarchival_session_app_label">Pending...</string> </resources> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 150951fd57f8..06bcd26417e0 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -5373,4 +5373,6 @@ <java-symbol type="string" name="config_defaultContextualSearchKey" /> <java-symbol type="string" name="config_defaultContextualSearchEnabled" /> <java-symbol type="string" name="config_defaultContextualSearchLegacyEnabled" /> + + <java-symbol type="string" name="unarchival_session_app_label" /> </resources> diff --git a/services/core/java/com/android/server/pm/PackageArchiver.java b/services/core/java/com/android/server/pm/PackageArchiver.java index ef8453dcee67..29de26e41df4 100644 --- a/services/core/java/com/android/server/pm/PackageArchiver.java +++ b/services/core/java/com/android/server/pm/PackageArchiver.java @@ -31,6 +31,7 @@ import static android.content.pm.PackageInstaller.UNARCHIVAL_STATUS_UNSET; import static android.content.pm.PackageManager.DELETE_ALL_USERS; import static android.content.pm.PackageManager.DELETE_ARCHIVE; import static android.content.pm.PackageManager.DELETE_KEEP_DATA; +import static android.content.pm.PackageManager.INSTALL_UNARCHIVE; import static android.content.pm.PackageManager.INSTALL_UNARCHIVE_DRAFT; import static android.graphics.drawable.AdaptiveIconDrawable.getExtraInsetFraction; import static android.os.PowerExemptionManager.REASON_PACKAGE_UNARCHIVE; @@ -754,8 +755,9 @@ public class PackageArchiver { int draftSessionId; try { - draftSessionId = Binder.withCleanCallingIdentity(() -> - createDraftSession(packageName, installerPackage, statusReceiver, userId)); + draftSessionId = Binder.withCleanCallingIdentity( + () -> createDraftSession(packageName, installerPackage, callerPackageName, + statusReceiver, userId)); } catch (RuntimeException e) { if (e.getCause() instanceof IOException) { throw ExceptionUtils.wrap((IOException) e.getCause()); @@ -795,11 +797,18 @@ public class PackageArchiver { } private int createDraftSession(String packageName, String installerPackage, + String callerPackageName, IntentSender statusReceiver, int userId) throws IOException { PackageInstaller.SessionParams sessionParams = new PackageInstaller.SessionParams( PackageInstaller.SessionParams.MODE_FULL_INSTALL); sessionParams.setAppPackageName(packageName); - sessionParams.installFlags = INSTALL_UNARCHIVE_DRAFT; + sessionParams.setAppLabel( + mContext.getString(com.android.internal.R.string.unarchival_session_app_label)); + sessionParams.setAppIcon( + getArchivedAppIcon(packageName, UserHandle.of(userId), callerPackageName)); + // To make sure SessionInfo::isUnarchival returns true for draft sessions, + // INSTALL_UNARCHIVE is also set. + sessionParams.installFlags = (INSTALL_UNARCHIVE_DRAFT | INSTALL_UNARCHIVE); int installerUid = mPm.snapshotComputer().getPackageUid(installerPackage, 0, userId); // Handles case of repeated unarchival calls for the same package. |