1267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov/* 2267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov * Copyright (C) 2015 The Android Open Source Project 3267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov * 4267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov * Licensed under the Apache License, Version 2.0 (the "License"); 5267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov * you may not use this file except in compliance with the License. 6267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov * You may obtain a copy of the License at 7267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov * 8267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov * http://www.apache.org/licenses/LICENSE-2.0 9267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov * 10267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov * Unless required by applicable law or agreed to in writing, software 11267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov * distributed under the License is distributed on an "AS IS" BASIS, 12267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov * See the License for the specific language governing permissions and 14267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov * limitations under the License. 15267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov */ 16ef861375eebd9ac6cce7c0bb163380ab1c951063Svetoslavpackage com.android.packageinstaller.permission.ui.television; 17267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov 18267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganovimport android.app.ActionBar; 19267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganovimport android.app.FragmentTransaction; 20267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganovimport android.content.ActivityNotFoundException; 21f2736bd4fb3df44ac03385162b9f8d1bf4cb9b61Todd Volkertimport android.content.Context; 22267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganovimport android.content.Intent; 23267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganovimport android.os.Bundle; 2474fa089b8c39d84b737607a3e3d2cde4d3b42d24Philip P. Moltmannimport android.support.annotation.Nullable; 25f2736bd4fb3df44ac03385162b9f8d1bf4cb9b61Todd Volkertimport android.support.v7.preference.Preference; 26f2736bd4fb3df44ac03385162b9f8d1bf4cb9b61Todd Volkertimport android.support.v7.preference.Preference.OnPreferenceClickListener; 27f2736bd4fb3df44ac03385162b9f8d1bf4cb9b61Todd Volkertimport android.support.v7.preference.PreferenceScreen; 289f0442cdfc055cc3aed19770f48f516b052f6e60Jason Monkimport android.util.ArraySet; 29267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganovimport android.util.Log; 30267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganovimport android.view.MenuItem; 31f9ffffb3b507a797ad1ead81cbff5f4935956e4cTodd Volkertimport android.view.View; 32267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov 33267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganovimport com.android.packageinstaller.R; 34f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monkimport com.android.packageinstaller.permission.model.PermissionApps.PmCache; 35267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganovimport com.android.packageinstaller.permission.model.PermissionGroup; 36267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganovimport com.android.packageinstaller.permission.model.PermissionGroups; 37f9bf4f795615bac03d1b35a0138318473b1ef6bfSvet Ganovimport com.android.packageinstaller.permission.utils.Utils; 38267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov 39267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganovimport java.util.List; 40267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov 41b22473b280b2b893167ffaae24e9b1c43d343a3fKeyvan Amiripublic final class ManagePermissionsFragment extends SettingsWithHeader 42267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov implements PermissionGroups.PermissionsGroupsChangeCallback, OnPreferenceClickListener { 43267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov private static final String LOG_TAG = "ManagePermissionsFragment"; 44267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov 45267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov private static final String OS_PKG = "android"; 46267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov 47f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk private static final String EXTRA_PREFS_KEY = "extra_prefs_key"; 48f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk 499f0442cdfc055cc3aed19770f48f516b052f6e60Jason Monk private ArraySet<String> mLauncherPkgs; 509f0442cdfc055cc3aed19770f48f516b052f6e60Jason Monk 51267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov private PermissionGroups mPermissions; 52267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov 53267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov private PreferenceScreen mExtraScreen; 54267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov 55267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov public static ManagePermissionsFragment newInstance() { 56267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov return new ManagePermissionsFragment(); 57267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov } 58267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov 59267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov @Override 60267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov public void onCreate(Bundle icicle) { 61267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov super.onCreate(icicle); 62a11e73b95ac5d664d57e860fa41a00c7a50720b7Todd Volkert setLoading(true /* loading */, false /* animate */); 63267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov setHasOptionsMenu(true); 64267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov final ActionBar ab = getActivity().getActionBar(); 65267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov if (ab != null) { 66267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov ab.setDisplayHomeAsUpEnabled(true); 67267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov } 689f0442cdfc055cc3aed19770f48f516b052f6e60Jason Monk mLauncherPkgs = Utils.getLauncherPackages(getContext()); 699337ca6d658fa5abf7bc42cfff195827d07c496bPhilip P. Moltmann mPermissions = new PermissionGroups(getContext(), getLoaderManager(), this); 70267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov } 71267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov 72267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov @Override 73267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov public boolean onOptionsItemSelected(MenuItem item) { 74d9f8f576c98b8ef194ca77131cb779b14dde5886Svet Ganov if (item.getItemId() == android.R.id.home) { 75d9f8f576c98b8ef194ca77131cb779b14dde5886Svet Ganov getActivity().finish(); 76d9f8f576c98b8ef194ca77131cb779b14dde5886Svet Ganov return true; 77267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov } 78267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov return super.onOptionsItemSelected(item); 79267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov } 80267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov 81267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov @Override 82267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov public boolean onPreferenceClick(Preference preference) { 83267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov String key = preference.getKey(); 84267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov 85267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov PermissionGroup group = mPermissions.getGroup(key); 86267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov if (group == null) { 87267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov return false; 88267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov } 89267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov 90267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov Intent intent = new Intent(Intent.ACTION_MANAGE_PERMISSION_APPS) 91267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov .putExtra(Intent.EXTRA_PERMISSION_NAME, key); 92267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov try { 93267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov getActivity().startActivity(intent); 94267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov } catch (ActivityNotFoundException e) { 95267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov Log.w(LOG_TAG, "No app to handle " + intent); 96267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov } 97267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov 98267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov return true; 99267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov } 100267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov 101267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov @Override 102267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov public void onPermissionGroupsChanged() { 103267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov updatePermissionsUi(); 104267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov } 105267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov 106f9ffffb3b507a797ad1ead81cbff5f4935956e4cTodd Volkert @Override 107f9bf4f795615bac03d1b35a0138318473b1ef6bfSvet Ganov public void onViewCreated(View view, Bundle savedInstanceState) { 108f9ffffb3b507a797ad1ead81cbff5f4935956e4cTodd Volkert super.onViewCreated(view, savedInstanceState); 109b22473b280b2b893167ffaae24e9b1c43d343a3fKeyvan Amiri bindPermissionUi(this, getView()); 11030366743234bbdcbd2f6f638e3d6c364207a9400Todd Volkert } 111f9ffffb3b507a797ad1ead81cbff5f4935956e4cTodd Volkert 112b22473b280b2b893167ffaae24e9b1c43d343a3fKeyvan Amiri private static void bindPermissionUi(SettingsWithHeader fragment, @Nullable View rootView) { 113b22473b280b2b893167ffaae24e9b1c43d343a3fKeyvan Amiri if (fragment == null || rootView == null) { 114f2736bd4fb3df44ac03385162b9f8d1bf4cb9b61Todd Volkert return; 115f2736bd4fb3df44ac03385162b9f8d1bf4cb9b61Todd Volkert } 116b22473b280b2b893167ffaae24e9b1c43d343a3fKeyvan Amiri fragment.setHeader(null, null, null, fragment.getString( 117b22473b280b2b893167ffaae24e9b1c43d343a3fKeyvan Amiri R.string.manage_permissions_decor_title)); 118f2736bd4fb3df44ac03385162b9f8d1bf4cb9b61Todd Volkert } 119f2736bd4fb3df44ac03385162b9f8d1bf4cb9b61Todd Volkert 120f2736bd4fb3df44ac03385162b9f8d1bf4cb9b61Todd Volkert private void updatePermissionsUi() { 121f2736bd4fb3df44ac03385162b9f8d1bf4cb9b61Todd Volkert Context context = getPreferenceManager().getContext(); 122f2736bd4fb3df44ac03385162b9f8d1bf4cb9b61Todd Volkert if (context == null) { 123f2736bd4fb3df44ac03385162b9f8d1bf4cb9b61Todd Volkert return; 124f9ffffb3b507a797ad1ead81cbff5f4935956e4cTodd Volkert } 125f9ffffb3b507a797ad1ead81cbff5f4935956e4cTodd Volkert 126267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov List<PermissionGroup> groups = mPermissions.getGroups(); 127267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov PreferenceScreen screen = getPreferenceScreen(); 128267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov 12993568c580d730911a6e2734e79fbe6dc27c1bca1Jason Monk // Use this to speed up getting the info for all of the PermissionApps below. 13093568c580d730911a6e2734e79fbe6dc27c1bca1Jason Monk // Create a new one for each refresh to make sure it has fresh data. 13193568c580d730911a6e2734e79fbe6dc27c1bca1Jason Monk PmCache cache = new PmCache(getContext().getPackageManager()); 132267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov for (PermissionGroup group : groups) { 13330366743234bbdcbd2f6f638e3d6c364207a9400Todd Volkert boolean isSystemPermission = group.getDeclaringPackage().equals(OS_PKG); 13430366743234bbdcbd2f6f638e3d6c364207a9400Todd Volkert 135f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk Preference preference = findPreference(group.getName()); 136f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk if (preference == null && mExtraScreen != null) { 137f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk preference = mExtraScreen.findPreference(group.getName()); 138f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk } 139f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk if (preference == null) { 140f2736bd4fb3df44ac03385162b9f8d1bf4cb9b61Todd Volkert preference = new Preference(context); 141f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk preference.setOnPreferenceClickListener(this); 142f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk preference.setKey(group.getName()); 143f2736bd4fb3df44ac03385162b9f8d1bf4cb9b61Todd Volkert preference.setIcon(Utils.applyTint(context, group.getIcon(), 144f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk android.R.attr.colorControlNormal)); 145f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk preference.setTitle(group.getLabel()); 146140154b8965eb599ea79991462fce46daa4ce8dbJason Monk // Set blank summary so that no resizing/jumping happens when the summary is loaded. 147140154b8965eb599ea79991462fce46daa4ce8dbJason Monk preference.setSummary(" "); 148f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk preference.setPersistent(false); 149d9f8f576c98b8ef194ca77131cb779b14dde5886Svet Ganov if (isSystemPermission) { 150f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk screen.addPreference(preference); 151f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk } else { 152f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk if (mExtraScreen == null) { 153f2736bd4fb3df44ac03385162b9f8d1bf4cb9b61Todd Volkert mExtraScreen = getPreferenceManager().createPreferenceScreen(context); 154f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk } 155f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk mExtraScreen.addPreference(preference); 156f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk } 157f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk } 158f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk 1599337ca6d658fa5abf7bc42cfff195827d07c496bPhilip P. Moltmann preference.setSummary(getString(R.string.app_permissions_group_summary, 1609337ca6d658fa5abf7bc42cfff195827d07c496bPhilip P. Moltmann group.getGranted(), group.getTotal())); 161267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov } 162267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov 163f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk if (mExtraScreen != null && mExtraScreen.getPreferenceCount() > 0 164f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk && screen.findPreference(EXTRA_PREFS_KEY) == null) { 165f2736bd4fb3df44ac03385162b9f8d1bf4cb9b61Todd Volkert Preference extraScreenPreference = new Preference(context); 166f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk extraScreenPreference.setKey(EXTRA_PREFS_KEY); 16797d7b7a694afdd62adf4607be65717548eec40b5Svet Ganov extraScreenPreference.setIcon(Utils.applyTint(context, 168ef861375eebd9ac6cce7c0bb163380ab1c951063Svetoslav R.drawable.ic_more_items, 169f2736bd4fb3df44ac03385162b9f8d1bf4cb9b61Todd Volkert android.R.attr.colorControlNormal)); 170267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov extraScreenPreference.setTitle(R.string.additional_permissions); 171267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov extraScreenPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() { 172267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov @Override 173267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov public boolean onPreferenceClick(Preference preference) { 174267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov AdditionalPermissionsFragment frag = new AdditionalPermissionsFragment(); 175267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov frag.setTargetFragment(ManagePermissionsFragment.this, 0); 176267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov FragmentTransaction ft = getFragmentManager().beginTransaction(); 177267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov ft.replace(android.R.id.content, frag); 178f5f6b1b113bb39a268948c19a39833d3ff839d32Todd Volkert ft.addToBackStack(null); 179267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov ft.commit(); 180267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov return true; 181267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov } 182267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov }); 18391bc7980041628fb807ee19f5588abe5615be26bJason Monk int count = mExtraScreen.getPreferenceCount(); 18491bc7980041628fb807ee19f5588abe5615be26bJason Monk extraScreenPreference.setSummary(getResources().getQuantityString( 18591bc7980041628fb807ee19f5588abe5615be26bJason Monk R.plurals.additional_permissions_more, count, count)); 186267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov screen.addPreference(extraScreenPreference); 187267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov } 18839e9a82e0d5ea964f6ad187669e4358da40a132aJason Monk if (screen.getPreferenceCount() != 0) { 189a11e73b95ac5d664d57e860fa41a00c7a50720b7Todd Volkert setLoading(false /* loading */, true /* animate */); 19039e9a82e0d5ea964f6ad187669e4358da40a132aJason Monk } 191267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov } 192267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov 193b22473b280b2b893167ffaae24e9b1c43d343a3fKeyvan Amiri public static class AdditionalPermissionsFragment extends SettingsWithHeader { 194267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov @Override 195267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov public void onCreate(Bundle icicle) { 196a11e73b95ac5d664d57e860fa41a00c7a50720b7Todd Volkert setLoading(true /* loading */, false /* animate */); 197267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov super.onCreate(icicle); 198f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk getActivity().setTitle(R.string.additional_permissions); 199f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk setHasOptionsMenu(true); 200267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov } 201267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov 202267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov @Override 203f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk public void onDestroy() { 204f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk getActivity().setTitle(R.string.app_permissions); 205f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk super.onDestroy(); 206267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov } 207f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk 208f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk @Override 209f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk public boolean onOptionsItemSelected(MenuItem item) { 210f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk switch (item.getItemId()) { 211f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk case android.R.id.home: 212f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk getFragmentManager().popBackStack(); 213f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk return true; 214f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk } 215f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk return super.onOptionsItemSelected(item); 216f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk } 217f589a098e175c9779aa4ba9d4c40eea6cdafde2eJason Monk 218f2736bd4fb3df44ac03385162b9f8d1bf4cb9b61Todd Volkert @Override 219f9bf4f795615bac03d1b35a0138318473b1ef6bfSvet Ganov public void onViewCreated(View view, Bundle savedInstanceState) { 22030366743234bbdcbd2f6f638e3d6c364207a9400Todd Volkert super.onViewCreated(view, savedInstanceState); 221b22473b280b2b893167ffaae24e9b1c43d343a3fKeyvan Amiri bindPermissionUi(this, getView()); 222b22473b280b2b893167ffaae24e9b1c43d343a3fKeyvan Amiri } 223b22473b280b2b893167ffaae24e9b1c43d343a3fKeyvan Amiri 224b22473b280b2b893167ffaae24e9b1c43d343a3fKeyvan Amiri private static void bindPermissionUi(SettingsWithHeader fragment, @Nullable View rootView) { 225b22473b280b2b893167ffaae24e9b1c43d343a3fKeyvan Amiri if (fragment == null || rootView == null) { 226b22473b280b2b893167ffaae24e9b1c43d343a3fKeyvan Amiri return; 227b22473b280b2b893167ffaae24e9b1c43d343a3fKeyvan Amiri } 228b22473b280b2b893167ffaae24e9b1c43d343a3fKeyvan Amiri fragment.setHeader(null, null, null, 229b22473b280b2b893167ffaae24e9b1c43d343a3fKeyvan Amiri fragment.getString(R.string.additional_permissions_decor_title)); 23030366743234bbdcbd2f6f638e3d6c364207a9400Todd Volkert } 23130366743234bbdcbd2f6f638e3d6c364207a9400Todd Volkert 23230366743234bbdcbd2f6f638e3d6c364207a9400Todd Volkert @Override 233f2736bd4fb3df44ac03385162b9f8d1bf4cb9b61Todd Volkert public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { 234f2736bd4fb3df44ac03385162b9f8d1bf4cb9b61Todd Volkert setPreferenceScreen(((ManagePermissionsFragment) getTargetFragment()).mExtraScreen); 235a11e73b95ac5d664d57e860fa41a00c7a50720b7Todd Volkert setLoading(false /* loading */, true /* animate */); 236f2736bd4fb3df44ac03385162b9f8d1bf4cb9b61Todd Volkert } 237267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov } 238267c2bd39c248eea2679c0a8efa334d3155e262cSvet Ganov} 239