diff options
-rw-r--r-- | src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java | 2 | ||||
-rw-r--r-- | src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java | 27 |
2 files changed, 25 insertions, 4 deletions
diff --git a/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java index f0e8dba4..e1dd85a6 100644 --- a/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java +++ b/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java @@ -240,7 +240,7 @@ public final class AppPermissionsFragment extends SettingsWithHeader if (newValue == Boolean.TRUE) { group.grantRuntimePermissions(false); } else { - if (group.hasAppOpPermission() && !mHasConfirmedRevoke) { + if (!group.hasRuntimePermission() && !mHasConfirmedRevoke) { new AlertDialog.Builder(getContext()) .setMessage(R.string.old_sdk_deny_warning) .setNegativeButton(R.string.cancel, null) diff --git a/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java b/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java index b8ae369d..d1d7c87e 100644 --- a/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java +++ b/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java @@ -17,7 +17,10 @@ package com.android.packageinstaller.permission.ui; import android.annotation.Nullable; import android.app.ActionBar; +import android.app.AlertDialog; import android.content.Context; +import android.content.DialogInterface; +import android.content.DialogInterface.OnClickListener; import android.content.Intent; import android.graphics.drawable.Drawable; import android.os.Bundle; @@ -57,6 +60,7 @@ public final class PermissionAppsFragment extends SettingsWithHeader implements private PermissionApps mPermissionApps; private ArrayMap<String, PermissionGroup> mToggledGroups; + private boolean mHasConfirmedRevoke; @Override public void onCreate(Bundle savedInstanceState) { @@ -168,9 +172,9 @@ public final class PermissionAppsFragment extends SettingsWithHeader implements } @Override - public boolean onPreferenceChange(Preference preference, Object newValue) { + public boolean onPreferenceChange(final Preference preference, Object newValue) { String pkg = preference.getKey(); - PermissionApp app = mPermissionApps.getApp(pkg); + final PermissionApp app = mPermissionApps.getApp(pkg); addToggledGroup(app.getPackageName(), app.getPermissionGroup()); @@ -180,7 +184,24 @@ public final class PermissionAppsFragment extends SettingsWithHeader implements if (newValue == Boolean.TRUE) { app.grantRuntimePermissions(); } else { - app.revokeRuntimePermissions(); + if (!app.hasRuntimePermissions() && !mHasConfirmedRevoke) { + new AlertDialog.Builder(getContext()) + .setMessage(R.string.old_sdk_deny_warning) + .setNegativeButton(R.string.cancel, null) + .setPositiveButton(R.string.grant_dialog_button_deny, + new OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + ((SwitchPreference) preference).setChecked(false); + app.revokeRuntimePermissions(); + mHasConfirmedRevoke = true; + } + }) + .show(); + return false; + } else { + app.revokeRuntimePermissions(); + } } return true; } |