diff options
author | Svet Ganov <svetoslavganov@google.com> | 2015-08-22 00:16:22 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-08-22 00:16:22 +0000 |
commit | 80c4d8ab508749be9e8ae1d10b4b46ba04ef103e (patch) | |
tree | 6d1b6175f1fccec49539056bb27844d1fa3f2572 /src | |
parent | 59cabc36b450830b5d8394470d5195d38efc2655 (diff) | |
parent | 7f4103b04d6af92fd92d92f5526b73aa76fbd233 (diff) | |
download | android_packages_apps_PackageInstaller-80c4d8ab508749be9e8ae1d10b4b46ba04ef103e.tar.gz android_packages_apps_PackageInstaller-80c4d8ab508749be9e8ae1d10b4b46ba04ef103e.tar.bz2 android_packages_apps_PackageInstaller-80c4d8ab508749be9e8ae1d10b4b46ba04ef103e.zip |
am 7f4103b0: am 8dcea3bf: Show multi-permission UI in the requested order.
* commit '7f4103b04d6af92fd92d92f5526b73aa76fbd233':
Show multi-permission UI in the requested order.
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/packageinstaller/permission/model/AppPermissions.java | 58 | ||||
-rw-r--r-- | src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java | 18 |
2 files changed, 40 insertions, 36 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); } } diff --git a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java index c55267e0..3ada752b 100644 --- a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java +++ b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java @@ -31,7 +31,6 @@ import android.hardware.camera2.utils.ArrayUtils; import android.os.Bundle; import android.text.SpannableString; import android.text.style.ForegroundColorSpan; -import android.util.ArrayMap; import android.util.Log; import android.view.KeyEvent; import android.view.MotionEvent; @@ -47,6 +46,7 @@ import com.android.packageinstaller.permission.utils.SafetyNetLogger; import com.android.packageinstaller.permission.utils.Utils; import java.util.ArrayList; +import java.util.LinkedHashMap; import java.util.List; public class GrantPermissionsActivity extends OverlayTouchActivity @@ -57,7 +57,7 @@ public class GrantPermissionsActivity extends OverlayTouchActivity private String[] mRequestedPermissions; private int[] mGrantResults; - private ArrayMap<String, GroupState> mRequestGrantPermissionGroups = new ArrayMap<>(); + private LinkedHashMap<String, GroupState> mRequestGrantPermissionGroups = new LinkedHashMap<>(); private GrantPermissionsViewHandler mViewHandler; private AppPermissions mAppPermissions; @@ -180,8 +180,8 @@ public class GrantPermissionsActivity extends OverlayTouchActivity private boolean showNextPermissionGroupGrantRequest() { final int groupCount = mRequestGrantPermissionGroups.size(); - for (int i = 0; i < groupCount; i++) { - GroupState groupState = mRequestGrantPermissionGroups.valueAt(i); + int currentIndex = 0; + for (GroupState groupState : mRequestGrantPermissionGroups.values()) { if (groupState.mState == GroupState.STATE_UNKNOWN) { CharSequence appLabel = mAppPermissions.getAppLabel(); SpannableString message = new SpannableString(getString( @@ -208,11 +208,13 @@ public class GrantPermissionsActivity extends OverlayTouchActivity } int icon = groupState.mGroup.getIconResId(); - mViewHandler.updateUi(groupState.mGroup.getName(), groupCount, i, + mViewHandler.updateUi(groupState.mGroup.getName(), groupCount, currentIndex, Icon.createWithResource(resources, icon), message, groupState.mGroup.isUserSet()); - return true; + return true; } + + currentIndex++; } return false; @@ -352,8 +354,8 @@ public class GrantPermissionsActivity extends OverlayTouchActivity final int groupCount = mRequestGrantPermissionGroups.size(); List<AppPermissionGroup> groups = new ArrayList<>(groupCount); - for (int i = 0; i < groupCount; i++) { - groups.add(mRequestGrantPermissionGroups.valueAt(i).mGroup); + for (GroupState groupState : mRequestGrantPermissionGroups.values()) { + groups.add(groupState.mGroup); } SafetyNetLogger.logPermissionsRequested(mAppPermissions.getPackageInfo(), groups); |