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

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

Resume installation after permitting installing unknown apps.

When a user allows an app to install unknown apps, resume the
installation. PIA checked for an incorrect result code from the settings
activity, which is now fixed. Instead, we check if the client is allowed
to install unknown apps before resuming.
PIA will finish itself if the user returns from the install unknown apps
settings page without toggling the permission.

Bug: 267992205
Test: Manual. Followed the repro steps in the mentioned bug.
Change-Id: I17eca83c7fbfb3a610fe9cd009f3e61e4723a651
parent 58af2f25
Loading
Loading
Loading
Loading
+15 −13
Original line number Diff line number Diff line
@@ -246,29 +246,31 @@ public class PackageInstallerActivity extends AlertActivity {

    @Override
    public void onActivityResult(int request, int result, Intent data) {
        if (request == REQUEST_TRUST_EXTERNAL_SOURCE && result == RESULT_OK) {
            // The user has just allowed this package to install other packages (via Settings).
            mAllowUnknownSources = true;

        if (request == REQUEST_TRUST_EXTERNAL_SOURCE) {
            // Log the fact that the app is requesting an install, and is now allowed to do it
            // (before this point we could only log that it's requesting an install, but isn't
            // allowed to do it yet).
            String appOpStr =
                    AppOpsManager.permissionToOp(Manifest.permission.REQUEST_INSTALL_PACKAGES);
            mAppOpsManager.noteOpNoThrow(appOpStr, mOriginatingUid, mOriginatingPackage,
                    mCallingAttributionTag,
            int appOpMode = mAppOpsManager.noteOpNoThrow(appOpStr, mOriginatingUid,
                    mOriginatingPackage, mCallingAttributionTag,
                    "Successfully started package installation activity");

            if (appOpMode == AppOpsManager.MODE_ALLOWED) {
                // The user has just allowed this package to install other packages
                // (via Settings).
                mAllowUnknownSources = true;
                DialogFragment currentDialog =
                        (DialogFragment) getFragmentManager().findFragmentByTag("dialog");
                if (currentDialog != null) {
                    currentDialog.dismissAllowingStateLoss();
                }

                initiateInstall();
            } else {
                finish();
            }
        } else {
            finish();
        }
    }

    private String getPackageNameForUid(int sourceUid) {