Skip to content

Commit 55007fd

Browse files
author
Linux Build Service Account
committed
Promotion of android-framework.lnx.2.0-00010.
CRs Change ID Subject -------------------------------------------------------------------------------------------------------------- 1068254 I157a4b0aab0e8d4f9719b4ff4d68f7eb11922ec3 Add dialog when revoke one permission Change-Id: Ibedae37883c76ee28402058a4a425e0b1e7ac1fe CRs-Fixed: 1068254
2 parents 7d83a5d + b787f07 commit 55007fd

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)