Search in sources :

Example 11 with UserManager

use of android.os.UserManager in project platform_frameworks_base by android.

the class MtpDevice method open.

/**
     * Opens the MTP device.  Once the device is open it takes ownership of the
     * {@link android.hardware.usb.UsbDeviceConnection}.
     * The connection will be closed when you call {@link #close()}
     * The connection will also be closed if this method fails.
     *
     * @param connection an open {@link android.hardware.usb.UsbDeviceConnection} for the device
     * @return true if the device was successfully opened.
     */
public boolean open(UsbDeviceConnection connection) {
    boolean result = false;
    Context context = connection.getContext();
    if (context != null) {
        UserManager userManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
        if (!userManager.hasUserRestriction(UserManager.DISALLOW_USB_FILE_TRANSFER)) {
            result = native_open(mDevice.getDeviceName(), connection.getFileDescriptor());
        }
    }
    if (!result) {
        connection.close();
    }
    return result;
}
Also used : Context(android.content.Context) UserManager(android.os.UserManager)

Example 12 with UserManager

use of android.os.UserManager in project platform_frameworks_base by android.

the class StorageMeasurement method measureExactStorage.

private void measureExactStorage(IMediaContainerService imcs) {
    final UserManager userManager = mContext.getSystemService(UserManager.class);
    final PackageManager packageManager = mContext.getPackageManager();
    final List<UserInfo> users = userManager.getUsers();
    final List<UserInfo> currentProfiles = userManager.getEnabledProfiles(ActivityManager.getCurrentUser());
    final MeasurementDetails details = new MeasurementDetails();
    final Message finished = mMeasurementHandler.obtainMessage(MeasurementHandler.MSG_COMPLETED, details);
    if (mVolume == null || !mVolume.isMountedReadable()) {
        finished.sendToTarget();
        return;
    }
    if (mSharedVolume != null && mSharedVolume.isMountedReadable()) {
        for (UserInfo currentUserInfo : currentProfiles) {
            final int userId = currentUserInfo.id;
            final File basePath = mSharedVolume.getPathForUser(userId);
            HashMap<String, Long> mediaMap = new HashMap<>(sMeasureMediaTypes.size());
            details.mediaSize.put(userId, mediaMap);
            // external volume
            for (String type : sMeasureMediaTypes) {
                final File path = new File(basePath, type);
                final long size = getDirectorySize(imcs, path);
                mediaMap.put(type, size);
            }
            // Measure misc files not counted under media
            addValue(details.miscSize, userId, measureMisc(imcs, basePath));
        }
        if (mSharedVolume.getType() == VolumeInfo.TYPE_EMULATED) {
            // will be spliced in later
            for (UserInfo user : users) {
                final File userPath = mSharedVolume.getPathForUser(user.id);
                final long size = getDirectorySize(imcs, userPath);
                addValue(details.usersSize, user.id, size);
            }
        }
    }
    final File file = mVolume.getPath();
    if (file != null) {
        details.totalSize = file.getTotalSpace();
        details.availSize = file.getFreeSpace();
    }
    // Measure all apps hosted on this volume for all users
    if (mVolume.getType() == VolumeInfo.TYPE_PRIVATE) {
        final List<ApplicationInfo> apps = packageManager.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES | PackageManager.GET_DISABLED_COMPONENTS);
        final List<ApplicationInfo> volumeApps = new ArrayList<>();
        for (ApplicationInfo app : apps) {
            if (Objects.equals(app.volumeUuid, mVolume.getFsUuid())) {
                volumeApps.add(app);
            }
        }
        final int count = users.size() * volumeApps.size();
        if (count == 0) {
            finished.sendToTarget();
            return;
        }
        final StatsObserver observer = new StatsObserver(true, details, ActivityManager.getCurrentUser(), currentProfiles, finished, count);
        for (UserInfo user : users) {
            for (ApplicationInfo app : volumeApps) {
                packageManager.getPackageSizeInfoAsUser(app.packageName, user.id, observer);
            }
        }
    } else {
        finished.sendToTarget();
        return;
    }
}
Also used : Message(android.os.Message) HashMap(java.util.HashMap) ApplicationInfo(android.content.pm.ApplicationInfo) ArrayList(java.util.ArrayList) UserInfo(android.content.pm.UserInfo) PackageManager(android.content.pm.PackageManager) UserManager(android.os.UserManager) File(java.io.File) IPackageStatsObserver(android.content.pm.IPackageStatsObserver)

Example 13 with UserManager

use of android.os.UserManager in project platform_frameworks_base by android.

the class RestrictedLockUtils method isAdminInCurrentUserOrProfile.

public static boolean isAdminInCurrentUserOrProfile(Context context, ComponentName admin) {
    DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
    UserManager um = UserManager.get(context);
    for (UserInfo userInfo : um.getProfiles(UserHandle.myUserId())) {
        if (dpm.isAdminActiveAsUser(admin, userInfo.id)) {
            return true;
        }
    }
    return false;
}
Also used : DevicePolicyManager(android.app.admin.DevicePolicyManager) UserManager(android.os.UserManager) UserInfo(android.content.pm.UserInfo)

Example 14 with UserManager

use of android.os.UserManager in project platform_frameworks_base by android.

the class RestrictedLockUtils method checkIfRestrictionEnforced.

/**
     * Checks if a restriction is enforced on a user and returns the enforced admin and
     * admin userId.
     *
     * @param userRestriction Restriction to check
     * @param userId User which we need to check if restriction is enforced on.
     * @return EnforcedAdmin Object containing the enforced admin component and admin user details,
     * or {@code null} If the restriction is not set. If the restriction is set by both device owner
     * and profile owner, then the admin component will be set to {@code null} and userId to
     * {@link UserHandle#USER_NULL}.
     */
public static EnforcedAdmin checkIfRestrictionEnforced(Context context, String userRestriction, int userId) {
    DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
    if (dpm == null) {
        return null;
    }
    UserManager um = UserManager.get(context);
    int restrictionSource = um.getUserRestrictionSource(userRestriction, UserHandle.of(userId));
    // If the restriction is not enforced or enforced only by system then return null
    if (restrictionSource == UserManager.RESTRICTION_NOT_SET || restrictionSource == UserManager.RESTRICTION_SOURCE_SYSTEM) {
        return null;
    }
    final boolean enforcedByProfileOwner = (restrictionSource & UserManager.RESTRICTION_SOURCE_PROFILE_OWNER) != 0;
    final boolean enforcedByDeviceOwner = (restrictionSource & UserManager.RESTRICTION_SOURCE_DEVICE_OWNER) != 0;
    if (enforcedByProfileOwner) {
        return getProfileOwner(context, userId);
    } else if (enforcedByDeviceOwner) {
        // When the restriction is enforced by device owner, return the device owner admin only
        // if the admin is for the {@param userId} otherwise return a default EnforcedAdmin.
        final EnforcedAdmin deviceOwner = getDeviceOwner(context);
        return deviceOwner.userId == userId ? deviceOwner : EnforcedAdmin.MULTIPLE_ENFORCED_ADMIN;
    }
    return null;
}
Also used : DevicePolicyManager(android.app.admin.DevicePolicyManager) UserManager(android.os.UserManager)

Example 15 with UserManager

use of android.os.UserManager in project platform_frameworks_base by android.

the class RestrictedLockUtils method checkIfKeyguardFeaturesDisabled.

/**
     * Checks if keyguard features are disabled by policy.
     *
     * @param keyguardFeatures Could be any of keyguard features that can be
     * disabled by {@link android.app.admin.DevicePolicyManager#setKeyguardDisabledFeatures}.
     * @return EnforcedAdmin Object containing the enforced admin component and admin user details,
     * or {@code null} If the notification features are not disabled. If the restriction is set by
     * multiple admins, then the admin component will be set to {@code null} and userId to
     * {@link UserHandle#USER_NULL}.
     */
public static EnforcedAdmin checkIfKeyguardFeaturesDisabled(Context context, int keyguardFeatures, int userId) {
    final DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
    if (dpm == null) {
        return null;
    }
    final UserManager um = (UserManager) context.getSystemService(Context.USER_SERVICE);
    LockPatternUtils lockPatternUtils = new LockPatternUtils(context);
    EnforcedAdmin enforcedAdmin = null;
    if (um.getUserInfo(userId).isManagedProfile()) {
        final List<ComponentName> admins = dpm.getActiveAdminsAsUser(userId);
        if (admins == null) {
            return null;
        }
        for (ComponentName admin : admins) {
            if ((dpm.getKeyguardDisabledFeatures(admin, userId) & keyguardFeatures) != 0) {
                if (enforcedAdmin == null) {
                    enforcedAdmin = new EnforcedAdmin(admin, userId);
                } else {
                    return EnforcedAdmin.MULTIPLE_ENFORCED_ADMIN;
                }
            }
        }
    } else {
        // user that do not use a separate work challenge.
        for (UserInfo userInfo : um.getProfiles(userId)) {
            final List<ComponentName> admins = dpm.getActiveAdminsAsUser(userInfo.id);
            if (admins == null) {
                continue;
            }
            final boolean isSeparateProfileChallengeEnabled = lockPatternUtils.isSeparateProfileChallengeEnabled(userInfo.id);
            for (ComponentName admin : admins) {
                if (!isSeparateProfileChallengeEnabled) {
                    if ((dpm.getKeyguardDisabledFeatures(admin, userInfo.id) & keyguardFeatures) != 0) {
                        if (enforcedAdmin == null) {
                            enforcedAdmin = new EnforcedAdmin(admin, userInfo.id);
                        } else {
                            return EnforcedAdmin.MULTIPLE_ENFORCED_ADMIN;
                        }
                        // has set policy on the parent admin.
                        continue;
                    }
                }
                if (userInfo.isManagedProfile()) {
                    // If userInfo.id is a managed profile, we also need to look at
                    // the policies set on the parent.
                    DevicePolicyManager parentDpm = dpm.getParentProfileInstance(userInfo);
                    if ((parentDpm.getKeyguardDisabledFeatures(admin, userInfo.id) & keyguardFeatures) != 0) {
                        if (enforcedAdmin == null) {
                            enforcedAdmin = new EnforcedAdmin(admin, userInfo.id);
                        } else {
                            return EnforcedAdmin.MULTIPLE_ENFORCED_ADMIN;
                        }
                    }
                }
            }
        }
    }
    return enforcedAdmin;
}
Also used : DevicePolicyManager(android.app.admin.DevicePolicyManager) UserManager(android.os.UserManager) LockPatternUtils(com.android.internal.widget.LockPatternUtils) ComponentName(android.content.ComponentName) UserInfo(android.content.pm.UserInfo)

Aggregations

UserManager (android.os.UserManager)271 UserInfo (android.content.pm.UserInfo)146 UserHandle (android.os.UserHandle)44 RemoteException (android.os.RemoteException)40 Intent (android.content.Intent)30 DevicePolicyManager (android.app.admin.DevicePolicyManager)29 ComponentName (android.content.ComponentName)29 Context (android.content.Context)25 PackageManager (android.content.pm.PackageManager)25 ArrayList (java.util.ArrayList)21 PendingIntent (android.app.PendingIntent)16 LockPatternUtils (com.android.internal.widget.LockPatternUtils)16 ApplicationInfo (android.content.pm.ApplicationInfo)15 File (java.io.File)15 ContentResolver (android.content.ContentResolver)14 ResolveInfo (android.content.pm.ResolveInfo)13 IPackageManager (android.content.pm.IPackageManager)12 Drawable (android.graphics.drawable.Drawable)12 MediumTest (android.test.suitebuilder.annotation.MediumTest)12 Resources (android.content.res.Resources)11