diff options
Diffstat (limited to 'src/com/android/packageinstaller/permission/model/AppPermissions.java')
-rw-r--r-- | src/com/android/packageinstaller/permission/model/AppPermissions.java | 58 |
1 files changed, 30 insertions, 28 deletions
diff --git a/src/com/android/packageinstaller/permission/model/AppPermissions.java b/src/com/android/packageinstaller/permission/model/AppPermissions.java index bca06c0c..125a6bd8 100644 --- a/src/com/android/packageinstaller/permission/model/AppPermissions.java +++ b/src/com/android/packageinstaller/permission/model/AppPermissions.java @@ -19,18 +19,16 @@ package com.android.packageinstaller.permission.model; import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; -import android.util.ArrayMap; - -import com.android.internal.util.ArrayUtils; import java.util.ArrayList; import java.util.Collections; +import java.util.LinkedHashMap; import java.util.List; public final class AppPermissions { private final ArrayList<AppPermissionGroup> mGroups = new ArrayList<>(); - private final ArrayMap<String, AppPermissionGroup> mNameToGroupMap = new ArrayMap<>(); + private final LinkedHashMap<String, AppPermissionGroup> mNameToGroupMap = new LinkedHashMap<>(); private final Context mContext; @@ -95,36 +93,40 @@ public final class AppPermissions { return; } - for (int i = 0; i < mPackageInfo.requestedPermissions.length; i++) { - String requestedPerm = mPackageInfo.requestedPermissions[i]; - - if (hasGroupForPermission(requestedPerm)) { - continue; - } - - AppPermissionGroup group = AppPermissionGroup.create(mContext, - mPackageInfo, requestedPerm); - if (group == null) { - continue; - } + if (mFilterPermissions != null) { + for (String filterPermission : mFilterPermissions) { + for (String requestedPerm : mPackageInfo.requestedPermissions) { + if (!filterPermission.equals(requestedPerm)) { + continue; + } - mGroups.add(group); - } + if (hasGroupForPermission(requestedPerm)) { + break; + } - if (!ArrayUtils.isEmpty(mFilterPermissions)) { - final int groupCount = mGroups.size(); - for (int i = groupCount - 1; i >= 0; i--) { - AppPermissionGroup group = mGroups.get(i); - boolean groupHasPermission = false; - for (String filterPerm : mFilterPermissions) { - if (group.hasPermission(filterPerm)) { - groupHasPermission = true; + AppPermissionGroup group = AppPermissionGroup.create(mContext, + mPackageInfo, requestedPerm); + if (group == null) { break; } + + mGroups.add(group); + break; } - if (!groupHasPermission) { - mGroups.remove(i); + } + } else { + for (String requestedPerm : mPackageInfo.requestedPermissions) { + if (hasGroupForPermission(requestedPerm)) { + continue; } + + AppPermissionGroup group = AppPermissionGroup.create(mContext, + mPackageInfo, requestedPerm); + if (group == null) { + continue; + } + + mGroups.add(group); } } |