From 791697e5e7db36d557d6559754798cba0309f280 Mon Sep 17 00:00:00 2001 From: Louis Chang Date: Tue, 30 May 2023 04:14:12 +0000 Subject: Launching updated package after finishing package installer The updated package was not started after package update completed. That's because the package installer were started on the app task, start the app again would bring the same task. Therefore, let's finish all the package installer activities before launching the updated app. Meanwhile, FLAG_ACTIVITY_CLEAR_TOP is used to clear the Setting's activity instead of reorder the PackageInstallerActivity to front, which could remove the Settings activity during the update flow. Bug: 282618106 Test: verified locally with package update Change-Id: Ie5942d1a9745ea9e3e9f0c04fa5d0ad332f23c93 --- .../src/com/android/packageinstaller/DeleteStagedFileOnResult.java | 5 +++++ .../src/com/android/packageinstaller/InstallSuccess.java | 7 +------ .../src/com/android/packageinstaller/PackageInstallerActivity.java | 6 ++++-- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/DeleteStagedFileOnResult.java b/packages/PackageInstaller/src/com/android/packageinstaller/DeleteStagedFileOnResult.java index 7b17cbdd3a1e..19d74b33e034 100644 --- a/packages/PackageInstaller/src/com/android/packageinstaller/DeleteStagedFileOnResult.java +++ b/packages/PackageInstaller/src/com/android/packageinstaller/DeleteStagedFileOnResult.java @@ -16,6 +16,8 @@ package com.android.packageinstaller; +import static android.content.Intent.CATEGORY_LAUNCHER; + import static com.android.packageinstaller.PackageInstallerActivity.EXTRA_STAGED_SESSION_ID; import android.app.Activity; @@ -45,6 +47,9 @@ public class DeleteStagedFileOnResult extends Activity { protected void onActivityResult(int requestCode, int resultCode, Intent data) { setResult(resultCode, data); finish(); + if (data != null && data.hasCategory(CATEGORY_LAUNCHER)) { + startActivity(data); + } } @Override diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/InstallSuccess.java b/packages/PackageInstaller/src/com/android/packageinstaller/InstallSuccess.java index 73c03a57cade..ff991d2f7ee3 100644 --- a/packages/PackageInstaller/src/com/android/packageinstaller/InstallSuccess.java +++ b/packages/PackageInstaller/src/com/android/packageinstaller/InstallSuccess.java @@ -17,7 +17,6 @@ package com.android.packageinstaller; import android.app.Activity; -import android.content.ActivityNotFoundException; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.ApplicationInfo; @@ -123,11 +122,7 @@ public class InstallSuccess extends AlertActivity { Button launchButton = mAlert.getButton(DialogInterface.BUTTON_POSITIVE); if (enabled) { launchButton.setOnClickListener(view -> { - try { - startActivity(mLaunchIntent); - } catch (ActivityNotFoundException | SecurityException e) { - Log.e(LOG_TAG, "Could not start activity", e); - } + setResult(Activity.RESULT_OK, mLaunchIntent); finish(); }); } else { diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java b/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java index d1541569bc55..e071c111d617 100644 --- a/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java +++ b/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java @@ -16,8 +16,9 @@ */ package com.android.packageinstaller; +import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP; import static android.content.Intent.FLAG_ACTIVITY_NO_HISTORY; -import static android.content.Intent.FLAG_ACTIVITY_REORDER_TO_FRONT; +import static android.content.Intent.FLAG_ACTIVITY_SINGLE_TOP; import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS; import android.Manifest; @@ -789,7 +790,8 @@ public class PackageInstallerActivity extends AlertActivity { } new Handler(Looper.getMainLooper()).postDelayed(() -> { if (!isDestroyed()) { - startActivity(getIntent().addFlags(FLAG_ACTIVITY_REORDER_TO_FRONT)); + startActivity(getIntent().addFlags( + FLAG_ACTIVITY_CLEAR_TOP | FLAG_ACTIVITY_SINGLE_TOP)); } }, 500); -- cgit v1.2.3-59-g8ed1b