diff options
author | Svet Ganov <svetoslavganov@google.com> | 2015-05-20 19:10:16 -0700 |
---|---|---|
committer | Svet Ganov <svetoslavganov@google.com> | 2015-05-20 19:10:22 -0700 |
commit | 1749359d023aa18f69b7c1ac22b736b4aeec624f (patch) | |
tree | 2e97254b7d0468c1ef7eea095ee913c26fd117f1 | |
parent | 81efecb1ac5cf569afcf71a5ead697d70d096e68 (diff) | |
download | android_packages_apps_PackageInstaller-1749359d023aa18f69b7c1ac22b736b4aeec624f.tar.gz android_packages_apps_PackageInstaller-1749359d023aa18f69b7c1ac22b736b4aeec624f.tar.bz2 android_packages_apps_PackageInstaller-1749359d023aa18f69b7c1ac22b736b4aeec624f.zip |
Show the permission description not its label in the grant dialog
bug:21336863
Change-Id: I5c25581bea76cc50b7b09534c9222550e7f464ff
4 files changed, 33 insertions, 6 deletions
diff --git a/res/values/strings.xml b/res/values/strings.xml index 955c0e5d..08957ab3 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -221,4 +221,7 @@ <!-- Label for the menu option to hide legacy permissions [CHAR LIMIT=40] --> <string name="hide_legacy_permissions">Hide legacy</string> + <!-- The default description of a permission, i.e. what it does. [CHAR LIMIT=40] --> + <string name="default_permission_description">perform an unknown action</string> + </resources> diff --git a/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java b/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java index a018f8c2..22bee515 100644 --- a/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java +++ b/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java @@ -48,6 +48,7 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup> private final String mName; private final String mDeclaringPackage; private final CharSequence mLabel; + private final CharSequence mDescription; private final ArrayMap<String, Permission> mPermissions = new ArrayMap<>(); private final String mIconPkg; private final int mIconResId; @@ -95,7 +96,7 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup> AppPermissionGroup group = new AppPermissionGroup(context, packageInfo, groupInfo.name, groupInfo.packageName, groupInfo.loadLabel(context.getPackageManager()), - groupInfo.packageName, groupInfo.icon); + loadGroupDescription(context, groupInfo), groupInfo.packageName, groupInfo.icon); if (groupInfo instanceof PermissionInfo) { permissionInfos = new ArrayList<>(); @@ -158,8 +159,26 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup> return group; } + private static CharSequence loadGroupDescription(Context context, PackageItemInfo group) { + CharSequence description = null; + if (group instanceof PermissionGroupInfo) { + description = ((PermissionGroupInfo) group).loadDescription( + context.getPackageManager()); + } else if (group instanceof PermissionInfo) { + description = ((PermissionInfo) group).loadDescription( + context.getPackageManager()); + } + + if (description == null || description.length() <= 0) { + description = context.getString(R.string.default_permission_description); + } + + return description; + } + private AppPermissionGroup(Context context, PackageInfo packageInfo, String name, - String declaringPackage, CharSequence label, String iconPkg, int iconResId) { + String declaringPackage, CharSequence label, CharSequence description, + String iconPkg, int iconResId) { mContext = context; mUserHandle = new UserHandle(mContext.getUserId()); mPackageManager = mContext.getPackageManager(); @@ -171,6 +190,7 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup> mDeclaringPackage = declaringPackage; mName = name; mLabel = label; + mDescription = description; if (iconResId != 0) { mIconPkg = iconPkg; mIconResId = iconResId; @@ -219,6 +239,10 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup> return mLabel; } + public CharSequence getDescription() { + return mDescription; + } + public boolean hasPermission(String permission) { return mPermissions.get(permission) != null; } @@ -264,15 +288,14 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup> if (!fixedByTheUser) { // Now the apps can ask for the permission as the user // no longer has it fixed in a denied state. - if (permission.isUserFixed() || !permission.isUserSet()) { + if (permission.isUserFixed() || permission.isUserSet()) { permission.setUserFixed(false); permission.setUserSet(true); mPackageManager.updatePermissionFlags(permission.getName(), mPackageInfo.packageName, PackageManager.FLAG_PERMISSION_USER_FIXED | PackageManager.FLAG_PERMISSION_USER_SET, - PackageManager.FLAG_PERMISSION_USER_SET, - mUserHandle); + 0, mUserHandle); } } diff --git a/src/com/android/packageinstaller/permission/ui/GrantPermissionViewHandler.java b/src/com/android/packageinstaller/permission/ui/GrantPermissionViewHandler.java index 66997c99..323396c3 100644 --- a/src/com/android/packageinstaller/permission/ui/GrantPermissionViewHandler.java +++ b/src/com/android/packageinstaller/permission/ui/GrantPermissionViewHandler.java @@ -312,6 +312,7 @@ public final class GrantPermissionViewHandler implements OnClickListener { mResultListener.onRequestGrantPermissionGroupResult(mGroupName, true, false); break; case R.id.permission_deny_button: + mAllowButton.setEnabled(true); mResultListener.onRequestGrantPermissionGroupResult(mGroupName, false, mDoNotAskCheckbox.isChecked()); break; diff --git a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java index 3a6644e7..eb3c8ed3 100644 --- a/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java +++ b/src/com/android/packageinstaller/permission/ui/GrantPermissionsActivity.java @@ -152,7 +152,7 @@ public class GrantPermissionsActivity extends Activity implements CharSequence appLabel = mAppPermissions.getAppLabel(); SpannableString message = new SpannableString(getString( R.string.permission_warning_template, appLabel, - groupState.mGroup.getLabel())); + groupState.mGroup.getDescription())); // Bold/color the app name. int appLabelStart = message.toString().indexOf(appLabel.toString(), 0); int appLabelLength = appLabel.length(); |