blob: 075ab3ce609e9a2a934e4be54ed670032801d9fd [file] [log] [blame]
/*
* Copyright (C) 2016 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.packageinstaller.permission.ui.handheld;
import android.app.FragmentTransaction;
import android.preference.Preference;
import android.preference.PreferenceScreen;
import android.view.MenuItem;
import com.android.packageinstaller.R;
import com.android.packageinstaller.permission.model.PermissionGroup;
import com.android.packageinstaller.permission.utils.Utils;
import java.util.List;
/**
* Fragment that allows the user to manage standard permissions.
*/
public final class ManageStandardPermissionsFragment extends ManagePermissionsFragment {
private static final String EXTRA_PREFS_KEY = "extra_prefs_key";
/**
* @return A new fragment
*/
public static ManageStandardPermissionsFragment newInstance() {
return new ManageStandardPermissionsFragment();
}
@Override
public void onStart() {
super.onStart();
getActivity().setTitle(com.android.packageinstaller.R.string.app_permissions);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
getActivity().finish();
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
protected void updatePermissionsUi() {
PreferenceScreen screen = updatePermissionsUi(true);
if (screen == null) {
return;
}
// Check if we need an additional permissions preference
List<PermissionGroup> groups = getPermissions().getGroups();
int numExtraPermissions = 0;
for (PermissionGroup group : groups) {
if (!group.getDeclaringPackage().equals(ManagePermissionsFragment.OS_PKG)) {
numExtraPermissions++;
}
}
Preference additionalPermissionsPreference = screen.findPreference(EXTRA_PREFS_KEY);
if (numExtraPermissions == 0) {
if (additionalPermissionsPreference != null) {
screen.removePreference(additionalPermissionsPreference);
}
} else {
if (additionalPermissionsPreference == null) {
additionalPermissionsPreference = new Preference(getActivity());
additionalPermissionsPreference.setKey(EXTRA_PREFS_KEY);
additionalPermissionsPreference.setIcon(Utils.applyTint(getActivity(),
R.drawable.ic_more_items,
android.R.attr.colorControlNormal));
additionalPermissionsPreference.setTitle(R.string.additional_permissions);
additionalPermissionsPreference.setOnPreferenceClickListener(preference -> {
ManageCustomPermissionsFragment frag =
new ManageCustomPermissionsFragment();
frag.setTargetFragment(ManageStandardPermissionsFragment.this, 0);
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(android.R.id.content, frag);
ft.addToBackStack(null);
ft.commit();
return true;
});
screen.addPreference(additionalPermissionsPreference);
}
additionalPermissionsPreference.setSummary(getResources().getQuantityString(
R.plurals.additional_permissions_more, numExtraPermissions,
numExtraPermissions));
}
}
}