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

Commit 6c63cda2 authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Snap for 4535700 from b2ffccee to pi-release

Change-Id: I2d6b05e6b3dc921159add372bdfb5dd2c0c34cb4
parents 4a814c0c b2ffccee
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@
    <uses-permission android:name="android.permission.MANAGE_APP_OPS_RESTRICTIONS" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS" />
    <uses-permission android:name="android.permission.USE_RESERVED_DISK" />

    <uses-permission android:name="com.google.android.permission.INSTALL_WEARABLE_PACKAGES" />

+30 −0
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@
*/
package com.android.packageinstaller;

import static android.app.AppOpsManager.MODE_ALLOWED;

import static com.android.packageinstaller.PackageUtil.getMaxTargetSdkVersionForUid;

import android.Manifest;
@@ -23,6 +25,7 @@ import android.app.Activity;
import android.app.ActivityManager;
import android.app.ActivityThread;
import android.app.AppGlobals;
import android.app.AppOpsManager;
import android.app.DialogFragment;
import android.app.Fragment;
import android.app.FragmentTransaction;
@@ -89,6 +92,25 @@ public class UninstallerActivity extends Activity {
        try {
            int callingUid = ActivityManager.getService().getLaunchedFromUid(getActivityToken());

            String callingPackage = getPackageNameForUid(callingUid);
            if (callingPackage == null) {
                Log.e(TAG, "Package not found for originating uid " + callingUid);
                setResult(Activity.RESULT_FIRST_USER);
                finish();
                return;
            } else {
                AppOpsManager appOpsManager = (AppOpsManager) getSystemService(
                        Context.APP_OPS_SERVICE);
                if (appOpsManager.noteOpNoThrow(
                        AppOpsManager.OPSTR_REQUEST_DELETE_PACKAGES, callingUid, callingPackage)
                        != MODE_ALLOWED) {
                    Log.e(TAG, "Install from uid " + callingUid + " disallowed by AppOps");
                    setResult(Activity.RESULT_FIRST_USER);
                    finish();
                    return;
                }
            }

            if (getMaxTargetSdkVersionForUid(this, callingUid)
                    >= Build.VERSION_CODES.P && AppGlobals.getPackageManager().checkUidPermission(
                    Manifest.permission.REQUEST_DELETE_PACKAGES, callingUid)
@@ -360,4 +382,12 @@ public class UninstallerActivity extends Activity {
            }
        }
    }

    private String getPackageNameForUid(int sourceUid) {
        String[] packagesForUid = getPackageManager().getPackagesForUid(sourceUid);
        if (packagesForUid == null) {
            return null;
        }
        return packagesForUid[0];
    }
}