diff options
| author | Christopher Tate <ctate@google.com> | 2013-04-30 17:50:50 -0700 |
|---|---|---|
| committer | Android Git Automerger <android-git-automerger@android.com> | 2013-04-30 17:50:50 -0700 |
| commit | 9f9dc4b2304f71daf7d7a063606ef17818411969 (patch) | |
| tree | 9a2b37e814bf201661fa44e0a75b9c7686f577ce /services/java/com/android/server/pm/PackageManagerService.java | |
| parent | d9ad188a180072b3e9df4c09544174497e58e7af (diff) | |
| parent | 6e629e84c52c870ff6fe6d0493861997929209f4 (diff) | |
am 6e629e84: am 95a9bfe2: When installing/enabling a system app, bootstrap it
* commit '6e629e84c52c870ff6fe6d0493861997929209f4':
When installing/enabling a system app, bootstrap it
Diffstat (limited to 'services/java/com/android/server/pm/PackageManagerService.java')
| -rw-r--r-- | services/java/com/android/server/pm/PackageManagerService.java | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/services/java/com/android/server/pm/PackageManagerService.java b/services/java/com/android/server/pm/PackageManagerService.java index 253ffe4773e5..6b2426d2fb96 100644 --- a/services/java/com/android/server/pm/PackageManagerService.java +++ b/services/java/com/android/server/pm/PackageManagerService.java @@ -6079,6 +6079,7 @@ public class PackageManagerService extends IPackageManager.Stub { long callingId = Binder.clearCallingIdentity(); try { boolean sendAdded = false; + boolean isSystem = false; Bundle extras = new Bundle(1); // writer @@ -6092,12 +6093,29 @@ public class PackageManagerService extends IPackageManager.Stub { mSettings.writePackageRestrictionsLPr(userId); extras.putInt(Intent.EXTRA_UID, UserHandle.getUid(userId, pkgSetting.appId)); sendAdded = true; + isSystem = (pkgSetting.pkgFlags & ApplicationInfo.FLAG_SYSTEM) != 0; } } if (sendAdded) { sendPackageBroadcast(Intent.ACTION_PACKAGE_ADDED, packageName, extras, null, null, new int[] {userId}); + if (isSystem) { + // The just-installed/enabled app is bundled on the system, so presumed + // to be able to run automatically without needing an explicit launch. + // Send it a BOOT_COMPLETED if it would ordinarily have gotten one. + Intent bcIntent = new Intent(Intent.ACTION_BOOT_COMPLETED) + .addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES) + .setPackage(packageName); + try { + IActivityManager am = ActivityManagerNative.getDefault(); + am.broadcastIntent(null, bcIntent, null, null, 0, null, null, null, + android.app.AppOpsManager.OP_NONE, false, false, userId); + } catch (RemoteException e) { + // shouldn't happen + Slog.w(TAG, "Unable to bootstrap installed package", e); + } + } } } finally { Binder.restoreCallingIdentity(callingId); |
