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

Commit 2ab3f0fd authored by Fyodor Kupolov's avatar Fyodor Kupolov
Browse files

Pass the right userHandle to AppPermissionGroup

Previously, userHandle of the user associated with the context was always used.

Bug: 21804306
Change-Id: If297a4c7b22abf43533b8ed67df0fd9b11c9b82e
parent 6e5d5f06
Loading
Loading
Loading
Loading
+10 −8
Original line number Diff line number Diff line
@@ -88,15 +88,18 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup>
            }
        }

        return create(context, packageInfo, groupInfo, permissionInfos);
        return create(context, packageInfo, groupInfo, permissionInfos,
                new UserHandle(context.getUserId()));
    }

    public static AppPermissionGroup create(Context context, PackageInfo packageInfo,
            PackageItemInfo groupInfo, List<PermissionInfo> permissionInfos) {
            PackageItemInfo groupInfo, List<PermissionInfo> permissionInfos,
            UserHandle userHandle) {

        AppPermissionGroup group = new AppPermissionGroup(context, packageInfo, groupInfo.name,
                groupInfo.packageName, groupInfo.loadLabel(context.getPackageManager()),
                loadGroupDescription(context, groupInfo), groupInfo.packageName, groupInfo.icon);
                loadGroupDescription(context, groupInfo), groupInfo.packageName, groupInfo.icon,
                userHandle);

        if (groupInfo instanceof PermissionInfo) {
            permissionInfos = new ArrayList<>();
@@ -148,8 +151,7 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup>
                    == AppOpsManager.MODE_ALLOWED;

            final int flags = context.getPackageManager().getPermissionFlags(
                    requestedPermission, packageInfo.packageName,
                    new UserHandle(context.getUserId()));
                    requestedPermission, packageInfo.packageName, userHandle);

            Permission permission = new Permission(requestedPermission, granted,
                    appOp, appOpAllowed, flags);
@@ -178,9 +180,9 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup>

    private AppPermissionGroup(Context context, PackageInfo packageInfo, String name,
            String declaringPackage, CharSequence label, CharSequence description,
            String iconPkg, int iconResId) {
            String iconPkg, int iconResId, UserHandle userHandle) {
        mContext = context;
        mUserHandle = new UserHandle(mContext.getUserId());
        mUserHandle = userHandle;
        mPackageManager = mContext.getPackageManager();
        mPackageInfo = packageInfo;
        mAppSupportsRuntimePermissions = packageInfo.applicationInfo
@@ -281,7 +283,7 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup>
                if (!permission.isGranted()) {
                    permission.setGranted(true);
                    mPackageManager.grantRuntimePermission(mPackageInfo.packageName,
                            permission.getName(), new UserHandle(mContext.getUserId()));
                            permission.getName(), mUserHandle);
                }

                // Update the permission flags.
+1 −1
Original line number Diff line number Diff line
@@ -169,7 +169,7 @@ public class PermissionApps {
                    }

                    AppPermissionGroup group = AppPermissionGroup.create(mContext,
                            app, groupInfo, groupPermInfos);
                            app, groupInfo, groupPermInfos, user);

                    String label = mSkipUi ? app.packageName
                            : app.applicationInfo.loadLabel(mPm).toString();