Skip to content

Commit b787f07

Browse files
author
Jiao Yuan
committed
Add dialog when revoke one permission
When revoke one permission in the settings, add a warning dialog to users. Change-Id: I157a4b0aab0e8d4f9719b4ff4d68f7eb11922ec3
1 parent 2d5c59c commit b787f07

1 file changed

Lines changed: 24 additions & 8 deletions

File tree

src/com/android/packageinstaller/permission/ui/handheld/AppPermissionsFragment.java

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -332,18 +332,34 @@ public boolean onPreferenceChange(final Preference preference, Object newValue)
332332
PermissionInfo permInfo = pm.getPermissionInfo(key, 0);
333333
final AppPermissionGroup title_group
334334
= mAppPermissions.getPermissionGroup(permInfo.group);
335+
final boolean grantedByDefault = title_group.hasGrantedByDefaultPermission();
336+
PreferenceScreen screen = getPreferenceScreen();
337+
Preference group_preference = screen.findPreference((CharSequence) permInfo.group);
338+
AppPermissionGroup permissionGroup = getPermisssionGroup(permInfo.group);
335339
if (newValue == Boolean.TRUE) {
340+
((SwitchPreference)preference).setChecked(true);
336341
title_group.grantRuntimePermissions(false, filterPermissions);
342+
((SwitchPreference) group_preference).setChecked(
343+
permissionGroup.areRuntimePermissionsGranted());
337344
} else {
338-
title_group.revokeRuntimePermissions(false, filterPermissions);
345+
//When the permission is off, the application maybe will crash, so need to
346+
//add a warning dialog when the user revoke the permission.
347+
new AlertDialog.Builder(getContext())
348+
.setMessage(grantedByDefault ? R.string.system_warning
349+
: R.string.old_sdk_deny_warning)
350+
.setNegativeButton(R.string.cancel, null)
351+
.setPositiveButton(R.string.grant_dialog_button_deny_anyway,
352+
new OnClickListener() {
353+
@Override
354+
public void onClick(DialogInterface dialog, int which) {
355+
((SwitchPreference) preference).setChecked(false);
356+
title_group.revokeRuntimePermissions(false, filterPermissions);
357+
((SwitchPreference) group_preference).setChecked(
358+
permissionGroup.areRuntimePermissionsGranted());
359+
}
360+
})
361+
.show();
339362
}
340-
//group preferene update
341-
PreferenceScreen screen = getPreferenceScreen();
342-
Preference group_preference = screen.findPreference((CharSequence) permInfo.group);
343-
AppPermissionGroup permissionGroup = getPermisssionGroup(permInfo.group);
344-
((SwitchPreference) group_preference).setChecked(
345-
permissionGroup.areRuntimePermissionsGranted());
346-
((SwitchPreference)preference).setChecked(permissionGroup.areRuntimePermissionsGranted(filterPermissions));
347363
} catch (NameNotFoundException e) {
348364
Log.e(LOG_TAG, "Problem getting package info for ", e);
349365
}

0 commit comments

Comments
 (0)