From 2e3e943ccd419dd10d3e4df5ae7640e8b020cc76 Mon Sep 17 00:00:00 2001 From: Benjamin Franz Date: Fri, 17 Apr 2015 15:28:17 +0100 Subject: [PATCH] Add package name extra to PackageInstaller callback If an app invokes app install via PackageInstaller APIs without knowing the package name, the callback contains no information about the name of the installed package. Add EXTRA_PACKAGE_NAME to this callback. Also allow PackageInstaller to distinguish between a newly installed and an updated package. Bug: 19764848 Bug: 20150135 Change-Id: I062440a08df9a723e9445ea10bc6f6800c5b99a8 --- core/res/res/values/strings.xml | 6 ++++-- core/res/res/values/symbols.xml | 1 + .../com/android/server/pm/PackageInstallerService.java | 7 ++++++- .../java/com/android/server/pm/PackageManagerService.java | 6 ++++++ 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index 51c2062d806e8..cabf643a7d3d8 100644 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -3993,9 +3993,11 @@ Ask for password before unpinning - + Installed by your administrator - + + Updated by your administrator + Deleted by your administrator diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index b05fe075b95c8..420c2fa93520e 100755 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -698,6 +698,7 @@ + diff --git a/services/core/java/com/android/server/pm/PackageInstallerService.java b/services/core/java/com/android/server/pm/PackageInstallerService.java index a40617545995c..09096ff14e4a0 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerService.java +++ b/services/core/java/com/android/server/pm/PackageInstallerService.java @@ -969,8 +969,11 @@ public class PackageInstallerService extends IPackageInstaller.Stub { public void onPackageInstalled(String basePackageName, int returnCode, String msg, Bundle extras) { if (PackageManager.INSTALL_SUCCEEDED == returnCode && mShowNotification) { + boolean update = (extras != null) && extras.getBoolean(Intent.EXTRA_REPLACING); Notification notification = buildSuccessNotification(mContext, - mContext.getResources().getString(R.string.package_installed_device_owner), + mContext.getResources() + .getString(update ? R.string.package_updated_device_owner : + R.string.package_installed_device_owner), basePackageName, mUserId); if (notification != null) { @@ -980,6 +983,7 @@ public class PackageInstallerService extends IPackageInstaller.Stub { } } final Intent fillIn = new Intent(); + fillIn.putExtra(PackageInstaller.EXTRA_PACKAGE_NAME, basePackageName); fillIn.putExtra(PackageInstaller.EXTRA_SESSION_ID, mSessionId); fillIn.putExtra(PackageInstaller.EXTRA_STATUS, PackageManager.installStatusToPublicStatus(returnCode)); @@ -1030,6 +1034,7 @@ public class PackageInstallerService extends IPackageInstaller.Stub { R.color.system_notification_accent_color)) .setContentTitle(packageLabel) .setContentText(contentText) + .setStyle(new Notification.BigTextStyle().bigText(contentText)) .setLargeIcon(packageIcon) .build(); } diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index f087c33645a88..fb83cb9b565dc 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -1596,6 +1596,12 @@ public class PackageManagerService extends IPackageManager.Stub { res.origPackage); break; } + case PackageManager.INSTALL_SUCCEEDED: { + extras = new Bundle(); + extras.putBoolean(Intent.EXTRA_REPLACING, + res.removedInfo != null && res.removedInfo.removedPackage != null); + break; + } } return extras; }