summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSvetoslav Ganov <svetoslavganov@google.com>2016-03-23 19:14:51 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2016-03-23 19:14:51 +0000
commitf8be279162b843cb007a4fdd4458da27895a0b77 (patch)
tree48aa488d9087fb9b928aa339b74c625f5a8faa35 /src
parent5455eace1f2f841f5380533a508c3a1afeba3439 (diff)
parent437a6bfedb33daf66592bbed8595025f3e707850 (diff)
downloadandroid_packages_apps_PackageInstaller-f8be279162b843cb007a4fdd4458da27895a0b77.tar.gz
android_packages_apps_PackageInstaller-f8be279162b843cb007a4fdd4458da27895a0b77.tar.bz2
android_packages_apps_PackageInstaller-f8be279162b843cb007a4fdd4458da27895a0b77.zip
Merge "Respect past user choices in permisson review UI" into nyc-dev
Diffstat (limited to 'src')
-rw-r--r--src/com/android/packageinstaller/permission/model/AppPermissionGroup.java14
-rw-r--r--src/com/android/packageinstaller/permission/ui/ReviewPermissionsActivity.java23
2 files changed, 32 insertions, 5 deletions
diff --git a/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java b/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java
index fdb77934..1e8f48c3 100644
--- a/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java
+++ b/src/com/android/packageinstaller/permission/model/AppPermissionGroup.java
@@ -325,6 +325,20 @@ public final class AppPermissionGroup implements Comparable<AppPermissionGroup>
return false;
}
+ public boolean shouldRevokeOnUpgrade() {
+ if (mAppSupportsRuntimePermissions) {
+ return false;
+ }
+ final int permissionCount = mPermissions.size();
+ for (int i = 0; i < permissionCount; i++) {
+ Permission permission = mPermissions.valueAt(i);
+ if ((permission.getFlags() & PackageManager.FLAG_PERMISSION_REVOKE_ON_UPGRADE) != 0) {
+ return true;
+ }
+ }
+ return false;
+ }
+
public boolean grantRuntimePermissions(boolean fixedByTheUser) {
return grantRuntimePermissions(fixedByTheUser, null);
}
diff --git a/src/com/android/packageinstaller/permission/ui/ReviewPermissionsActivity.java b/src/com/android/packageinstaller/permission/ui/ReviewPermissionsActivity.java
index f31d618e..d7e44e7e 100644
--- a/src/com/android/packageinstaller/permission/ui/ReviewPermissionsActivity.java
+++ b/src/com/android/packageinstaller/permission/ui/ReviewPermissionsActivity.java
@@ -240,6 +240,9 @@ public final class ReviewPermissionsActivity extends Activity
private void bindUi() {
Activity activity = getActivity();
+ if (activity == null) {
+ return;
+ }
// Set icon
Drawable icon = mAppPermissions.getPackageInfo().applicationInfo.loadIcon(
@@ -279,6 +282,11 @@ public final class ReviewPermissionsActivity extends Activity
}
private void loadPreferences() {
+ Activity activity = getActivity();
+ if (activity == null) {
+ return;
+ }
+
PreferenceScreen screen = getPreferenceScreen();
if (screen == null) {
screen = getPreferenceManager().createPreferenceScreen(getActivity());
@@ -311,15 +319,17 @@ public final class ReviewPermissionsActivity extends Activity
// We update permission grants based on the final preference states
if (group.isReviewRequired()) {
- // If review is required use granted as default
- preference.setChecked(true);
+ // If review is required use granted as default unless
+ // the user went to settings first and expressed that
+ // the permission should be revoked for this app.
+ preference.setChecked(!group.shouldRevokeOnUpgrade());
} else {
// If review not required use the current grant state as default
preference.setChecked(group.areRuntimePermissionsGranted());
}
preference.setKey(group.getName());
- Drawable icon = Utils.loadDrawable(getActivity().getPackageManager(),
+ Drawable icon = Utils.loadDrawable(activity.getPackageManager(),
group.getIconPkg(), group.getIconResId());
preference.setIcon(Utils.applyTint(getContext(), icon,
android.R.attr.colorControlNormal));
@@ -344,7 +354,7 @@ public final class ReviewPermissionsActivity extends Activity
screen.addPreference(preference);
} else {
if (mNewPermissionsCategory == null) {
- mNewPermissionsCategory = new PreferenceCategory(getActivity());
+ mNewPermissionsCategory = new PreferenceCategory(activity);
mNewPermissionsCategory.setTitle(R.string.new_permissions_category);
mNewPermissionsCategory.setOrder(1);
screen.addPreference(mNewPermissionsCategory);
@@ -353,7 +363,7 @@ public final class ReviewPermissionsActivity extends Activity
}
} else {
if (currentPermissionsCategory == null) {
- currentPermissionsCategory = new PreferenceCategory(getActivity());
+ currentPermissionsCategory = new PreferenceCategory(activity);
currentPermissionsCategory.setTitle(R.string.current_permissions_category);
currentPermissionsCategory.setOrder(2);
screen.addPreference(currentPermissionsCategory);
@@ -377,6 +387,9 @@ public final class ReviewPermissionsActivity extends Activity
private void executeCallback(boolean success) {
Activity activity = getActivity();
+ if (activity == null) {
+ return;
+ }
if (success) {
IntentSender intent = activity.getIntent().getParcelableExtra(Intent.EXTRA_INTENT);
if (intent != null) {