Loading src/com/android/packageinstaller/permission/ui/handheld/AllAppPermissionsFragment.java +3 −15 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ package com.android.packageinstaller.permission.ui.handheld; import android.Manifest; import android.app.ActionBar; import android.app.AlertDialog; import android.content.Context; Loading Loading @@ -52,10 +51,6 @@ public final class AllAppPermissionsFragment extends SettingsWithHeader { private static final String KEY_OTHER = "other_perms"; private boolean mPermissionReviewRequired; private String mFilterGroup; private static final String EXTRA_FILTER_GROUP = "com.android.packageinstaller.extra.FILTER_GROUP"; Loading @@ -72,13 +67,6 @@ public final class AllAppPermissionsFragment extends SettingsWithHeader { return instance; } @Override public void onAttach(Context context) { super.onAttach(context); mPermissionReviewRequired = context.getResources().getBoolean( com.android.internal.R.bool.config_permissionReviewRequired); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Loading Loading @@ -165,9 +153,9 @@ public final class AllAppPermissionsFragment extends SettingsWithHeader { continue; } PreferenceGroup pref = findOrCreate(group, pm, prefs); // We allow individual permission control in SMS if review enabled final boolean mutable = mPermissionReviewRequired && Manifest.permission_group.SMS.equals(group.name); // We allow individual permission control in some groups if review enabled final boolean mutable = Utils.areGroupPermissionsIndividuallyControlled( getContext(), group.name); pref.addPreference(getPreference(info, perm, group, pm, mutable)); } else if (filterGroup == null) { if (perm.protectionLevel == PermissionInfo.PROTECTION_NORMAL) { Loading src/com/android/packageinstaller/permission/ui/handheld/AppPermissionsFragment.java +9 −19 Original line number Diff line number Diff line Loading @@ -16,14 +16,12 @@ package com.android.packageinstaller.permission.ui.handheld; import android.Manifest; import android.app.ActionBar; import android.app.Activity; import android.app.AlertDialog; import android.app.Fragment; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; Loading Loading @@ -74,8 +72,6 @@ public final class AppPermissionsFragment extends SettingsWithHeader private boolean mHasConfirmedRevoke; private boolean mPermissionReviewRequired; public static AppPermissionsFragment newInstance(String packageName) { return setPackageName(new AppPermissionsFragment(), packageName); } Loading @@ -87,13 +83,6 @@ public final class AppPermissionsFragment extends SettingsWithHeader return fragment; } @Override public void onAttach(Context context) { super.onAttach(context); mPermissionReviewRequired = context.getResources().getBoolean( com.android.internal.R.bool.config_permissionReviewRequired); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Loading Loading @@ -224,9 +213,8 @@ public final class AppPermissionsFragment extends SettingsWithHeader RestrictedSwitchPreference preference = new RestrictedSwitchPreference(context); preference.setChecked(group.areRuntimePermissionsGranted()); // SMS is a double target - one to toggle and one to fine manage if (mPermissionReviewRequired && Manifest.permission_group.SMS.equals(group.getName())) { // Some groups may be a double target - one to toggle and one to fine manage if (Utils.areGroupPermissionsIndividuallyControlled(getContext(), group.getName())) { preference.setOnPreferenceClickListener((pref) -> { showAllPermissions(group.getName()); return false; Loading @@ -235,11 +223,12 @@ public final class AppPermissionsFragment extends SettingsWithHeader preference.setSwitchOnClickListener(v -> { Switch switchView = (Switch) v; onPreferenceChange(preference, switchView.isChecked()); updateSmsPreferenceSummaryIfNeeded(group, preference); updateSummaryForIndividuallyControlledPermissionGroup( group, preference); preference.setCheckedOverride(switchView.isChecked()); }); updateSmsPreferenceSummaryIfNeeded(group, preference); updateSummaryForIndividuallyControlledPermissionGroup(group, preference); } else { preference.setOnPreferenceChangeListener(this); } Loading Loading @@ -331,7 +320,8 @@ public final class AppPermissionsFragment extends SettingsWithHeader (DialogInterface dialog, int which) -> { ((SwitchPreference) preference).setChecked(false); if (preference instanceof MultiTargetSwitchPreference) { updateSmsPreferenceSummaryIfNeeded(group, preference); updateSummaryForIndividuallyControlledPermissionGroup( group, preference); } group.revokeRuntimePermissions(false); if (!grantedByDefault) { Loading @@ -354,8 +344,8 @@ public final class AppPermissionsFragment extends SettingsWithHeader logToggledGroups(); } private void updateSmsPreferenceSummaryIfNeeded(AppPermissionGroup group, Preference preference) { private void updateSummaryForIndividuallyControlledPermissionGroup( AppPermissionGroup group, Preference preference) { int revokedCount = 0; List<Permission> permissions = group.getPermissions(); final int permissionCount = permissions.size(); Loading src/com/android/packageinstaller/permission/utils/Utils.java +10 −0 Original line number Diff line number Diff line Loading @@ -145,4 +145,14 @@ public final class Utils { return info.isSystemApp() && (info.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) == 0 && !launcherPkgs.contains(info.packageName); } public static boolean areGroupPermissionsIndividuallyControlled(Context context, String group) { if (!context.getResources().getBoolean( com.android.internal.R.bool.config_permissionReviewRequired)) { return false; } return Manifest.permission_group.SMS.equals(group) || Manifest.permission_group.PHONE.equals(group) || Manifest.permission_group.CONTACTS.equals(group); } } Loading
src/com/android/packageinstaller/permission/ui/handheld/AllAppPermissionsFragment.java +3 −15 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ package com.android.packageinstaller.permission.ui.handheld; import android.Manifest; import android.app.ActionBar; import android.app.AlertDialog; import android.content.Context; Loading Loading @@ -52,10 +51,6 @@ public final class AllAppPermissionsFragment extends SettingsWithHeader { private static final String KEY_OTHER = "other_perms"; private boolean mPermissionReviewRequired; private String mFilterGroup; private static final String EXTRA_FILTER_GROUP = "com.android.packageinstaller.extra.FILTER_GROUP"; Loading @@ -72,13 +67,6 @@ public final class AllAppPermissionsFragment extends SettingsWithHeader { return instance; } @Override public void onAttach(Context context) { super.onAttach(context); mPermissionReviewRequired = context.getResources().getBoolean( com.android.internal.R.bool.config_permissionReviewRequired); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Loading Loading @@ -165,9 +153,9 @@ public final class AllAppPermissionsFragment extends SettingsWithHeader { continue; } PreferenceGroup pref = findOrCreate(group, pm, prefs); // We allow individual permission control in SMS if review enabled final boolean mutable = mPermissionReviewRequired && Manifest.permission_group.SMS.equals(group.name); // We allow individual permission control in some groups if review enabled final boolean mutable = Utils.areGroupPermissionsIndividuallyControlled( getContext(), group.name); pref.addPreference(getPreference(info, perm, group, pm, mutable)); } else if (filterGroup == null) { if (perm.protectionLevel == PermissionInfo.PROTECTION_NORMAL) { Loading
src/com/android/packageinstaller/permission/ui/handheld/AppPermissionsFragment.java +9 −19 Original line number Diff line number Diff line Loading @@ -16,14 +16,12 @@ package com.android.packageinstaller.permission.ui.handheld; import android.Manifest; import android.app.ActionBar; import android.app.Activity; import android.app.AlertDialog; import android.app.Fragment; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; Loading Loading @@ -74,8 +72,6 @@ public final class AppPermissionsFragment extends SettingsWithHeader private boolean mHasConfirmedRevoke; private boolean mPermissionReviewRequired; public static AppPermissionsFragment newInstance(String packageName) { return setPackageName(new AppPermissionsFragment(), packageName); } Loading @@ -87,13 +83,6 @@ public final class AppPermissionsFragment extends SettingsWithHeader return fragment; } @Override public void onAttach(Context context) { super.onAttach(context); mPermissionReviewRequired = context.getResources().getBoolean( com.android.internal.R.bool.config_permissionReviewRequired); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Loading Loading @@ -224,9 +213,8 @@ public final class AppPermissionsFragment extends SettingsWithHeader RestrictedSwitchPreference preference = new RestrictedSwitchPreference(context); preference.setChecked(group.areRuntimePermissionsGranted()); // SMS is a double target - one to toggle and one to fine manage if (mPermissionReviewRequired && Manifest.permission_group.SMS.equals(group.getName())) { // Some groups may be a double target - one to toggle and one to fine manage if (Utils.areGroupPermissionsIndividuallyControlled(getContext(), group.getName())) { preference.setOnPreferenceClickListener((pref) -> { showAllPermissions(group.getName()); return false; Loading @@ -235,11 +223,12 @@ public final class AppPermissionsFragment extends SettingsWithHeader preference.setSwitchOnClickListener(v -> { Switch switchView = (Switch) v; onPreferenceChange(preference, switchView.isChecked()); updateSmsPreferenceSummaryIfNeeded(group, preference); updateSummaryForIndividuallyControlledPermissionGroup( group, preference); preference.setCheckedOverride(switchView.isChecked()); }); updateSmsPreferenceSummaryIfNeeded(group, preference); updateSummaryForIndividuallyControlledPermissionGroup(group, preference); } else { preference.setOnPreferenceChangeListener(this); } Loading Loading @@ -331,7 +320,8 @@ public final class AppPermissionsFragment extends SettingsWithHeader (DialogInterface dialog, int which) -> { ((SwitchPreference) preference).setChecked(false); if (preference instanceof MultiTargetSwitchPreference) { updateSmsPreferenceSummaryIfNeeded(group, preference); updateSummaryForIndividuallyControlledPermissionGroup( group, preference); } group.revokeRuntimePermissions(false); if (!grantedByDefault) { Loading @@ -354,8 +344,8 @@ public final class AppPermissionsFragment extends SettingsWithHeader logToggledGroups(); } private void updateSmsPreferenceSummaryIfNeeded(AppPermissionGroup group, Preference preference) { private void updateSummaryForIndividuallyControlledPermissionGroup( AppPermissionGroup group, Preference preference) { int revokedCount = 0; List<Permission> permissions = group.getPermissions(); final int permissionCount = permissions.size(); Loading
src/com/android/packageinstaller/permission/utils/Utils.java +10 −0 Original line number Diff line number Diff line Loading @@ -145,4 +145,14 @@ public final class Utils { return info.isSystemApp() && (info.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) == 0 && !launcherPkgs.contains(info.packageName); } public static boolean areGroupPermissionsIndividuallyControlled(Context context, String group) { if (!context.getResources().getBoolean( com.android.internal.R.bool.config_permissionReviewRequired)) { return false; } return Manifest.permission_group.SMS.equals(group) || Manifest.permission_group.PHONE.equals(group) || Manifest.permission_group.CONTACTS.equals(group); } }