diff options
Diffstat (limited to 'src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java')
-rw-r--r-- | src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java b/src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java index 31615676..4ef27426 100644 --- a/src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java +++ b/src/com/android/packageinstaller/permission/ui/wear/AppPermissionsFragmentWear.java @@ -42,6 +42,7 @@ import com.android.packageinstaller.permission.model.AppPermissions; import com.android.packageinstaller.permission.model.Permission; import com.android.packageinstaller.permission.utils.LocationUtils; import com.android.packageinstaller.permission.utils.SafetyNetLogger; +import com.android.packageinstaller.permission.utils.ArrayUtils; import com.android.packageinstaller.permission.utils.Utils; import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; @@ -212,6 +213,28 @@ public final class AppPermissionsFragmentWear extends PreferenceFragment { } else { group.revokeRuntimePermissions(true, new String[]{ perm.name }); } + + if (Utils.areGroupPermissionsIndividuallyControlled(getContext(), group.getName()) + && group.hasRuntimePermission()) { + // As long as one permission is changed in individually controlled group + // permissions, we will set user_fixed for non-granted permissions in that group. + // This avoids the system to automatically grant runtime permissions based on the + // fact that one of dangerous permission in that group is already granted. + String[] revokedPermissionsToFix = null; + final int permissionCount = group.getPermissions().size(); + + for (int i = 0; i < permissionCount; i++) { + Permission current = group.getPermissions().get(i); + if (!current.isGranted() && !current.isUserFixed()) { + revokedPermissionsToFix = ArrayUtils.appendString( + revokedPermissionsToFix, current.getName()); + } + } + + if (revokedPermissionsToFix != null) { + group.revokeRuntimePermissions(true, revokedPermissionsToFix); + } + } return true; }); return pref; |