diff options
| author | 2024-02-20 12:15:43 -0800 | |
|---|---|---|
| committer | 2024-02-20 21:27:15 +0000 | |
| commit | 4a9ad35690d150fde88efbf62c252cd70ae5767e (patch) | |
| tree | 4f03ec2f58689816e577217ade7a6a786fd11692 | |
| parent | 4a3070f87959ebd0bedab805cbd82b4cfd98349f (diff) | |
[PIA] add missing flag checks
This only prevents PIA from crashing. Install-unknown-source still won't
work until the flag is enabled.
BUG: 322928097
Test: builds
Change-Id: I9fc357000d20de7a2002ac8b7f5b2dae617fc354
3 files changed, 12 insertions, 5 deletions
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/InstallStaging.java b/packages/PackageInstaller/src/com/android/packageinstaller/InstallStaging.java index cf2f85ed5356..634e067a12d4 100644 --- a/packages/PackageInstaller/src/com/android/packageinstaller/InstallStaging.java +++ b/packages/PackageInstaller/src/com/android/packageinstaller/InstallStaging.java @@ -20,6 +20,7 @@ import static android.content.res.AssetFileDescriptor.UNKNOWN_LENGTH; import static com.android.packageinstaller.PackageInstallerActivity.EXTRA_STAGED_SESSION_ID; +import android.Manifest; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; @@ -27,10 +28,10 @@ import android.app.DialogFragment; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.content.pm.Flags; import android.content.pm.PackageInstaller; import android.content.pm.PackageManager; import android.content.res.AssetFileDescriptor; -import android.Manifest; import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; @@ -200,7 +201,7 @@ public class InstallStaging extends Activity { params.setPermissionState(Manifest.permission.USE_FULL_SCREEN_INTENT, PackageInstaller.SessionParams.PERMISSION_STATE_DENIED); - if (pfd != null) { + if (pfd != null && Flags.readInstallInfo()) { try { final PackageInstaller.InstallInfo result = installer.readInstallInfo(pfd, debugPathName, 0); diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java b/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java index 7240fb97611a..904e1843dd44 100644 --- a/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java +++ b/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java @@ -31,6 +31,7 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.ApplicationInfo; +import android.content.pm.Flags; import android.content.pm.InstallSourceInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageInstaller; @@ -397,7 +398,10 @@ public class PackageInstallerActivity extends Activity { final int sessionId = intent.getIntExtra(PackageInstaller.EXTRA_SESSION_ID, -1 /* defaultValue */); final SessionInfo info = mInstaller.getSessionInfo(sessionId); - String resolvedPath = info != null ? info.getResolvedBaseApkPath() : null; + String resolvedPath = null; + if (info != null && Flags.getResolvedApkPath()) { + resolvedPath = info.getResolvedBaseApkPath(); + } if (info == null || !info.isSealed() || resolvedPath == null) { Log.w(TAG, "Session " + mSessionId + " in funky state; ignoring"); finish(); diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/v2/model/InstallRepository.kt b/packages/PackageInstaller/src/com/android/packageinstaller/v2/model/InstallRepository.kt index aeabbd53d177..22caabdabbf0 100644 --- a/packages/PackageInstaller/src/com/android/packageinstaller/v2/model/InstallRepository.kt +++ b/packages/PackageInstaller/src/com/android/packageinstaller/v2/model/InstallRepository.kt @@ -25,6 +25,7 @@ import android.content.ContentResolver import android.content.Context import android.content.Intent import android.content.pm.ApplicationInfo +import android.content.pm.Flags import android.content.pm.PackageInfo import android.content.pm.PackageInstaller import android.content.pm.PackageInstaller.SessionInfo @@ -362,7 +363,7 @@ class InstallRepository(private val context: Context) { params.setPermissionState( Manifest.permission.USE_FULL_SCREEN_INTENT, SessionParams.PERMISSION_STATE_DENIED ) - if (pfd != null) { + if (pfd != null && Flags.readInstallInfo()) { try { val installInfo = packageInstaller.readInstallInfo(pfd, debugPathName, 0) params.setAppPackageName(installInfo.packageName) @@ -425,7 +426,8 @@ class InstallRepository(private val context: Context) { if (PackageInstaller.ACTION_CONFIRM_INSTALL == intent.action) { val info = packageInstaller.getSessionInfo(sessionId) - val resolvedPath = info?.resolvedBaseApkPath + val resolvedPath = + if (Flags.getResolvedApkPath()) info?.resolvedBaseApkPath else null if (info == null || !info.isSealed || resolvedPath == null) { Log.w(LOG_TAG, "Session $sessionId in funky state; ignoring") return InstallAborted(ABORT_REASON_INTERNAL_ERROR) |