Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ec43ea49 authored by Sumedh Sen's avatar Sumedh Sen
Browse files

Send install status on installer dialog dismiss

When "confirm install" dialog is dismissed by the user, activity result  RESULT_CANCELLED
is sent to the calling activity.

Bug: b/158060267
Test: Manual, using POC.
Change-Id: I31977fec42ece783422dbc06d9feec4ca283f256
parent 52dc6f56
Loading
Loading
Loading
Loading
+22 −6
Original line number Diff line number Diff line
@@ -85,6 +85,7 @@ public class PackageInstallerActivity extends AlertActivity {
    private Uri mReferrerURI;
    private int mOriginatingUid = PackageInstaller.SessionParams.UID_UNKNOWN;
    private String mOriginatingPackage; // The package name corresponding to #mOriginatingUid
    private int mActivityResultCode = Activity.RESULT_CANCELED;

    private final boolean mLocalLOGV = false;
    PackageManager mPm;
@@ -304,6 +305,7 @@ public class PackageInstallerActivity extends AlertActivity {
        if (icicle != null) {
            mAllowUnknownSources = icicle.getBoolean(ALLOW_UNKNOWN_SOURCES_KEY);
        }
        setFinishOnTouchOutside(true);

        mPm = getPackageManager();
        mIpm = AppGlobals.getPackageManager();
@@ -415,7 +417,7 @@ public class PackageInstallerActivity extends AlertActivity {
                (ignored, ignored2) -> {
                    if (mOk.isEnabled()) {
                        if (mSessionId != -1) {
                            mInstaller.setPermissionsResult(mSessionId, true);
                            setActivityResult(RESULT_OK);
                            finish();
                        } else {
                            startInstall();
@@ -425,10 +427,7 @@ public class PackageInstallerActivity extends AlertActivity {
        mAlert.setButton(DialogInterface.BUTTON_NEGATIVE, getString(R.string.cancel),
                (ignored, ignored2) -> {
                    // Cancel and finish
                    setResult(RESULT_CANCELED);
                    if (mSessionId != -1) {
                        mInstaller.setPermissionsResult(mSessionId, false);
                    }
                    setActivityResult(RESULT_CANCELED);
                    finish();
                }, null);
        setupAlert();
@@ -441,6 +440,23 @@ public class PackageInstallerActivity extends AlertActivity {
        }
    }

    private void setActivityResult(int resultCode) {
        mActivityResultCode = resultCode;
        super.setResult(resultCode);
    }

    @Override
    public void finish() {
        if (mSessionId != -1) {
            if (mActivityResultCode == Activity.RESULT_OK) {
                mInstaller.setPermissionsResult(mSessionId, true);
            } else {
                mInstaller.setPermissionsResult(mSessionId, false);
            }
        }
        super.finish();
    }

    /**
     * Check if it is allowed to install the package and initiate install if allowed. If not allowed
     * show the appropriate dialog.
@@ -598,7 +614,7 @@ public class PackageInstallerActivity extends AlertActivity {
    @Override
    public void onBackPressed() {
        if (mSessionId != -1) {
            mInstaller.setPermissionsResult(mSessionId, false);
            setActivityResult(RESULT_CANCELED);
        }
        super.onBackPressed();
    }