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

Commit a97855b7 authored by Rubin Xu's avatar Rubin Xu
Browse files

Remove permission check in DevicePolicyManager.isUninstallBlocked()

This is to allow Play to use this API to find out whether a package
is uninstallable due to profile or device owner policy's restriction.

Bug: 17914630
Change-Id: I4ce2963884ecdf3306805f36db80ed1ebf04d88f
parent 68ced899
Loading
Loading
Loading
Loading
+5 −4
Original line number Original line Diff line number Diff line
@@ -3400,12 +3400,13 @@ public class DevicePolicyManager {
    }
    }


    /**
    /**
     * Called by profile or device owners to check whether a user has been blocked from
     * Check whether the current user has been blocked by device policy from uninstalling a package.
     * uninstalling a package.
     * Requires the caller to be the profile owner if checking a specific admin's policy.
     *
     *
     * @param admin Which {@link DeviceAdminReceiver} this request is associated with.
     * @param admin The name of the admin component whose blocking policy will be checked, or null
     *        to check if any admin has blocked the uninstallation.
     * @param packageName package to check.
     * @param packageName package to check.
     * @return true if the user shouldn't be able to uninstall the package.
     * @return true if uninstallation is blocked.
     */
     */
    public boolean isUninstallBlocked(ComponentName admin, String packageName) {
    public boolean isUninstallBlocked(ComponentName admin, String packageName) {
        if (mService != null) {
        if (mService != null) {
+5 −3
Original line number Original line Diff line number Diff line
@@ -5038,13 +5038,15 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {


    @Override
    @Override
    public boolean isUninstallBlocked(ComponentName who, String packageName) {
    public boolean isUninstallBlocked(ComponentName who, String packageName) {
        // This function should return true if and only if the package is blocked by
        // setUninstallBlocked(). It should still return false for other cases of blocks, such as
        // when the package is a system app, or when it is an active device admin.
        final int userId = UserHandle.getCallingUserId();
        final int userId = UserHandle.getCallingUserId();


        synchronized (this) {
        synchronized (this) {
            if (who == null) {
            if (who != null) {
                throw new NullPointerException("ComponentName is null");
            }
                getActiveAdminForCallerLocked(who, DeviceAdminInfo.USES_POLICY_PROFILE_OWNER);
                getActiveAdminForCallerLocked(who, DeviceAdminInfo.USES_POLICY_PROFILE_OWNER);
            }


            long id = Binder.clearCallingIdentity();
            long id = Binder.clearCallingIdentity();
            try {
            try {