Search in sources :

Example 6 with PreferenceGroup

use of android.support.v7.preference.PreferenceGroup in project wire-android by wireapp.

the class DevicesPreferences method setupOtrDevices.

private void setupOtrDevices() {
    if (getStoreFactory() == null || getStoreFactory().isTornDown()) {
        return;
    }
    Self self = getStoreFactory().getZMessagingApiStore().getApi().getSelf();
    if (otrClient == null) {
        otrClient = self.getOtrClient();
    }
    if (otherClients == null) {
        otherClients = self.getOtherOtrClients();
        otherClients.addUpdateListener(otrClientsUpdateListener);
    }
    updateOtrDevices();
    final PreferenceGroup currentOtrClientPreferenceGroup = (PreferenceGroup) findPreference(getString(R.string.pref_devices_current_device_category_key));
    otrClientSubscription = otrClient.subscribe(new Subscriber<OtrClient>() {

        @Override
        public void next(OtrClient value) {
            if (getActivity() == null) {
                return;
            }
            currentOtrClientPreferenceGroup.setTitle(getString(R.string.pref_devices_current_device_category_title));
            currentOtrClientPreferenceGroup.removeAll();
            net.xpece.android.support.preference.Preference preference = new net.xpece.android.support.preference.Preference(getContext());
            preference.setTitle(DevicesPreferencesUtil.getTitle(getActivity(), value));
            preference.setSummary(DevicesPreferencesUtil.getSummary(getActivity(), value, false));
            preference.setKey(getString(R.string.pref_device_details_screen_key));
            final PreferenceScreen preferenceScreen = new PreferenceScreen(getContext(), null);
            preferenceScreen.getExtras().putParcelable(DeviceDetailPreferences.PREFS_OTR_CLIENT, value);
            preferenceScreen.getExtras().putBoolean(DeviceDetailPreferences.PREFS_CURRENT_DEVICE, true);
            preferenceScreen.setTitle(preference.getTitle());
            preferenceScreen.setKey(preference.getKey());
            preference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {

                @Override
                public boolean onPreferenceClick(Preference preference) {
                    PreferenceManager preferenceManager = getPreferenceManager();
                    if (preferenceManager != null) {
                        PreferenceManager.OnNavigateToScreenListener listener = preferenceManager.getOnNavigateToScreenListener();
                        if (listener != null) {
                            listener.onNavigateToScreen(preferenceScreen);
                            return true;
                        }
                    }
                    return false;
                }
            });
            currentOtrClientPreferenceGroup.addPreference(preference);
        }
    });
}
Also used : PreferenceScreen(android.support.v7.preference.PreferenceScreen) Self(com.waz.api.Self) PreferenceManager(android.support.v7.preference.PreferenceManager) Subscriber(com.waz.api.Subscriber) Preference(android.support.v7.preference.Preference) PreferenceGroup(android.support.v7.preference.PreferenceGroup) OtrClient(com.waz.api.OtrClient)

Example 7 with PreferenceGroup

use of android.support.v7.preference.PreferenceGroup in project Shuttle by timusus.

the class SettingsFragment method onCreate.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getActivity().supportInvalidateOptionsMenu();
    mTintManager = new SystemBarTintManager(getActivity());
    if (getArguments() != null) {
        mPrefResId = getArguments().getInt(PREF_RES_ID);
    } else {
        mPrefResId = R.xml.settings_headers;
    }
    // Load the preferences from an XML resource
    addPreferencesFromResource(mPrefResId);
    mPrefs = PreferenceManager.getDefaultSharedPreferences(getContext());
    final Preference chooseTabsPreference = findPreference("pref_tab_chooser");
    if (chooseTabsPreference != null) {
        chooseTabsPreference.setOnPreferenceClickListener(preference -> {
            RecyclerView recyclerView = (RecyclerView) LayoutInflater.from(getContext()).inflate(R.layout.dialog_tab_chooser, null);
            recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
            TabsAdapter tabsAdapter = new TabsAdapter(getContext());
            ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new ItemTouchHelperCallback(tabsAdapter::moveItem, (fromPosition, toPosition) -> tabsAdapter.updatePreferences(), () -> {
            }));
            itemTouchHelper.attachToRecyclerView(recyclerView);
            tabsAdapter.setListener(new TabsAdapter.TabListener() {

                @Override
                public void onItemClick(View v, int position, CategoryItem categoryItem) {
                    categoryItem.setChecked(!categoryItem.isChecked());
                    com.simplecity.amp_library.utils.AnalyticsManager.logTabVisibilityChanged(categoryItem.isChecked(), categoryItem.title);
                    tabsAdapter.notifyItemChanged(position);
                    tabsAdapter.updatePreferences();
                }

                @Override
                public void onStartDrag(RecyclerView.ViewHolder viewHolder) {
                    itemTouchHelper.startDrag(viewHolder);
                }
            });
            recyclerView.setAdapter(tabsAdapter);
            DialogUtils.getBuilder(getContext()).title(R.string.pref_title_choose_tabs).customView(recyclerView, false).positiveText(R.string.button_done).onPositive((materialDialog, dialogAction) -> {
                DialogUtils.createRestartDialog(getActivity());
                materialDialog.dismiss();
            }).show();
            return true;
        });
    }
    final Preference colorPickerPreference = findPreference("pref_theme_highlight_color");
    if (colorPickerPreference != null) {
        colorPickerPreference.setOnPreferenceClickListener(preference -> {
            int selectedColor = mPrefs.getInt("pref_theme_highlight_color", -1);
            DialogUtils.showColorPickerDialog(this, selectedColor, color -> mPrefs.edit().putInt("pref_theme_highlight_color", color).apply());
            return true;
        });
    }
    final Preference accentPickerPreference = findPreference("pref_theme_accent_color");
    if (accentPickerPreference != null) {
        accentPickerPreference.setOnPreferenceClickListener(preference -> {
            int selectedColor = mPrefs.getInt("pref_theme_accent_color", -1);
            DialogUtils.showColorPickerDialog(this, selectedColor, ColorPalette.getAccentColors(), ColorPalette.getAccentColorsSub(), color -> mPrefs.edit().putInt("pref_theme_accent_color", color).apply());
            return true;
        });
    }
    mListener = (sharedPreferences, key) -> {
        if (key.equals("pref_theme_highlight_color") || key.equals("pref_theme_accent_color") || key.equals("pref_theme_white_accent")) {
            ThemeUtils.setTheme(getActivity());
            ThemeUtils.themeActionBar((SettingsActivity) getActivity());
            ThemeUtils.themeStatusBar(getActivity(), mTintManager);
            getListView().invalidate();
            themeUIElements();
            for (int i = 0, size = getListView().getChildCount(); i < size; i++) {
                View view = getListView().getChildAt(i);
                ThemeUtils.updateThemableViews(view);
            }
        }
        if (key.equals("pref_theme_base") || key.equals("pref_default_page")) {
            DialogUtils.createRestartDialog(getActivity());
        }
    };
    final Preference restartPreference = findPreference("pref_restart");
    if (restartPreference != null) {
        restartPreference.setOnPreferenceClickListener(preference -> {
            Intent intent = new Intent(getActivity(), MainActivity.class);
            ComponentName componentNAme = intent.getComponent();
            Intent mainIntent = IntentCompat.makeRestartActivityTask(componentNAme);
            startActivity(mainIntent);
            return true;
        });
    }
    final CheckBoxPreference showLockscreenArtworkPreference = (CheckBoxPreference) findPreference(SettingsManager.KEY_SHOW_LOCKSCREEN_ARTWORK);
    if (showLockscreenArtworkPreference != null) {
        showLockscreenArtworkPreference.setOnPreferenceClickListener(preference -> {
            MusicUtils.toggleLockscreenArtwork();
            return false;
        });
    }
    final Preference downloadArtworkPreference = findPreference("pref_download_artwork");
    if (downloadArtworkPreference != null) {
        downloadArtworkPreference.setOnPreferenceClickListener(preference -> {
            DialogUtils.showDownloadWarningDialog(getActivity(), (materialDialog, dialogAction) -> {
                Intent intent = new Intent(getContext(), ArtworkDownloadService.class);
                ShuttleApplication.getInstance().startService(intent);
            });
            return true;
        });
    }
    final Preference deleteArtworkPreference = findPreference("pref_delete_artwork");
    if (deleteArtworkPreference != null) {
        deleteArtworkPreference.setOnPreferenceClickListener(preference -> {
            DialogUtils.getBuilder(getActivity()).title(getString(R.string.pref_title_delete_artwork)).icon(DrawableUtils.themeLightOrDark(getActivity(), getResources().getDrawable(R.drawable.ic_dialog_alert))).content(getString(R.string.delete_artwork_confirmation_dialog)).positiveText(getString(R.string.button_ok)).onPositive((materialDialog, dialogAction) -> {
                Glide.get(getContext()).clearMemory();
                ShuttleUtils.execute(new AsyncTask<Void, Void, Void>() {

                    @Override
                    protected Void doInBackground(Void... params) {
                        Glide.get(getContext()).clearDiskCache();
                        return null;
                    }
                });
            }).negativeText(getString(R.string.cancel)).show();
            return true;
        });
    }
    final Preference downloadSimpleLastFmScrobbler = findPreference("pref_download_simple_lastfm_scrobbler");
    if (downloadSimpleLastFmScrobbler != null) {
        if (ShuttleUtils.isAmazonBuild()) {
            PreferenceGroup preferenceGroup = (PreferenceGroup) findPreference("pref_key_simple_lastfm_scrobble_settings");
            if (preferenceGroup != null) {
                preferenceGroup.removePreference(downloadSimpleLastFmScrobbler);
            }
        } else {
            downloadSimpleLastFmScrobbler.setIntent(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=com.adam.aslfms")));
        }
    }
    final Preference about = findPreference("pref_about");
    if (about != null) {
        about.setOnPreferenceClickListener(preference -> {
            View customView = LayoutInflater.from(getContext()).inflate(R.layout.dialog_changelog, null);
            WebView webView = (WebView) customView.findViewById(R.id.webView);
            int themeType = ThemeUtils.getThemeType(getActivity());
            webView.setBackgroundColor(getResources().getColor(android.R.color.transparent));
            if (themeType == ThemeUtils.ThemeType.TYPE_LIGHT || themeType == ThemeUtils.ThemeType.TYPE_SOLID_LIGHT) {
                webView.loadUrl("file:///android_asset/web/info.html");
            } else {
                webView.loadUrl("file:///android_asset/web/info_dark.html");
            }
            DialogUtils.getBuilder(getActivity()).title(R.string.pref_title_about).customView(customView, false).negativeText(R.string.close).show();
            AnalyticsManager.logChangelogViewed();
            return true;
        });
    }
    final Preference upgrade = findPreference("pref_upgrade");
    if (upgrade != null) {
        if (ShuttleUtils.isUpgraded()) {
            SettingsFragment.this.getPreferenceScreen().removePreference(upgrade);
        }
        upgrade.setOnPreferenceClickListener(preference -> {
            DialogUtils.showUpgradeDialog(getActivity(), (materialDialog, dialogAction) -> {
                if (ShuttleUtils.isAmazonBuild()) {
                    ShuttleUtils.openShuttleLink(getActivity(), "com.simplecity.amp_pro");
                } else {
                    AnalyticsManager.logUpgrade(AnalyticsManager.UpgradeType.UPGRADE);
                    ((SettingsActivity) getActivity()).purchasePremiumUpgrade();
                }
            });
            return true;
        });
    }
    final Preference viewBlacklist = findPreference("pref_blacklist_view");
    if (viewBlacklist != null) {
        viewBlacklist.setOnPreferenceClickListener(preference -> {
            DialogUtils.showBlacklistDialog(getActivity());
            return true;
        });
    }
    final Preference viewWhitelist = findPreference("pref_whitelist_view");
    if (viewWhitelist != null) {
        viewWhitelist.setOnPreferenceClickListener(preference -> {
            DialogUtils.showWhitelistDialog(getActivity());
            return true;
        });
    }
    final Preference clearBlacklist = findPreference("pref_blacklist_clear");
    if (clearBlacklist != null) {
        clearBlacklist.setOnPreferenceClickListener(preference -> {
            BlacklistHelper.deleteAllSongs();
            Toast.makeText(getActivity(), R.string.blacklist_deleted, Toast.LENGTH_SHORT).show();
            return true;
        });
    }
    final Preference clearWhitelist = findPreference("pref_whitelist_clear");
    if (clearWhitelist != null) {
        clearWhitelist.setOnPreferenceClickListener(preference -> {
            WhitelistHelper.deleteAllFolders();
            Toast.makeText(getActivity(), R.string.whitelist_deleted, Toast.LENGTH_SHORT).show();
            return true;
        });
    }
    final CheckBoxPreference ignoreEmbeddedArtwork = (CheckBoxPreference) findPreference(SettingsManager.KEY_IGNORE_EMBEDDED_ARTWORK);
    if (ignoreEmbeddedArtwork != null) {
        ignoreEmbeddedArtwork.setOnPreferenceChangeListener((preference, newValue) -> {
            showArtworkPreferenceDialog();
            return true;
        });
    }
    final CheckBoxPreference ignoreFolderArtwork = (CheckBoxPreference) findPreference(SettingsManager.KEY_IGNORE_FOLDER_ARTWORK);
    if (ignoreFolderArtwork != null) {
        ignoreFolderArtwork.setOnPreferenceChangeListener((preference, newValue) -> {
            showArtworkPreferenceDialog();
            return true;
        });
    }
    final CheckBoxPreference preferEmbeddedArtwork = (CheckBoxPreference) findPreference(SettingsManager.KEY_PREFER_EMBEDDED_ARTWORK);
    if (preferEmbeddedArtwork != null) {
        preferEmbeddedArtwork.setOnPreferenceChangeListener((preference, newValue) -> {
            showArtworkPreferenceDialog();
            return true;
        });
    }
    final CheckBoxPreference ignoreMediaStoreArtwork = (CheckBoxPreference) findPreference(SettingsManager.KEY_IGNORE_MEDIASTORE_ART);
    if (ignoreMediaStoreArtwork != null) {
        ignoreMediaStoreArtwork.setOnPreferenceChangeListener((preference, newValue) -> {
            showArtworkPreferenceDialog();
            return true;
        });
    }
    final CheckBoxPreference preferLastFmArtwork = (CheckBoxPreference) findPreference(SettingsManager.KEY_PREFER_LAST_FM);
    if (preferLastFmArtwork != null) {
        preferLastFmArtwork.setOnPreferenceChangeListener((preference, newValue) -> {
            showArtworkPreferenceDialog();
            return true;
        });
    }
    final Preference restorePurchases = findPreference("pref_restore_purchases");
    if (ShuttleUtils.isAmazonBuild() || ShuttleUtils.isUpgraded()) {
        PreferenceGroup preferenceGroup = (PreferenceGroup) findPreference("support_group");
        if (preferenceGroup != null) {
            preferenceGroup.removePreference(restorePurchases);
        }
    } else if (restorePurchases != null) {
        restorePurchases.setOnPreferenceClickListener(preference -> {
            ((SettingsActivity) getActivity()).restorePurchases();
            return true;
        });
    }
    final Preference versionPreference = findPreference("pref_version");
    if (versionPreference != null) {
        versionPreference.setSummary("Shuttle Music Player " + BuildConfig.VERSION_NAME + (ShuttleUtils.isUpgraded() ? " (Upgraded)" : " (Free)"));
    }
    final Preference faqPreference = findPreference("pref_faq");
    if (faqPreference != null) {
        faqPreference.setOnPreferenceClickListener(preference -> {
            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setData(Uri.parse("http://www.shuttlemusicplayer.com/#faq"));
            startActivity(intent);
            return true;
        });
    }
    final Preference gplusPreference = findPreference("pref_gplus");
    if (gplusPreference != null) {
        gplusPreference.setOnPreferenceClickListener(preference -> {
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://plus.google.com/communities/112365043563095486408"));
            startActivity(intent);
            return true;
        });
    }
    final Preference ratePreference = findPreference("pref_rate");
    if (ratePreference != null) {
        ratePreference.setOnPreferenceClickListener(preference -> {
            final String appPackageName = getActivity().getPackageName();
            ShuttleUtils.openShuttleLink(getActivity(), appPackageName);
            SettingsManager.getInstance().setHasRated();
            return true;
        });
    }
    final CheckBoxPreference openOnClickPreference = (CheckBoxPreference) findPreference("pref_open_now_playing_on_click");
    if (openOnClickPreference != null) {
        if (!ShuttleUtils.isTablet()) {
            PreferenceGroup preferenceGroup = (PreferenceGroup) findPreference("display_group");
            if (preferenceGroup != null) {
                preferenceGroup.removePreference(openOnClickPreference);
            }
        }
    }
    if (!ShuttleUtils.hasLollipop()) {
        PreferenceScreen preferenceScreen = getPreferenceScreen();
        if (preferenceScreen != null) {
            Preference notificationPreference = preferenceScreen.findPreference("pref_category_notifications");
            if (notificationPreference != null) {
                preferenceScreen.removePreference(notificationPreference);
            }
        }
    }
}
Also used : R(com.simplecity.amp_library.R) Bundle(android.os.Bundle) Uri(android.net.Uri) DrawableUtils(com.simplecity.amp_library.utils.DrawableUtils) Dialog(android.app.Dialog) Intent(android.content.Intent) CheckBoxPreference(android.preference.CheckBoxPreference) CategoryItem(com.simplecity.amp_library.model.CategoryItem) ArtworkDownloadService(com.simplecity.amp_library.services.ArtworkDownloadService) PreferenceScreen(android.preference.PreferenceScreen) Drawable(android.graphics.drawable.Drawable) AnalyticsManager(com.simplecity.amp_library.utils.AnalyticsManager) PreferenceFragment(android.support.v4.preference.PreferenceFragment) ThemeUtils(com.simplecity.amp_library.utils.ThemeUtils) ItemTouchHelper(android.support.v7.widget.helper.ItemTouchHelper) Toast(android.widget.Toast) View(android.view.View) ResourceUtils(com.simplecity.amp_library.utils.ResourceUtils) SystemBarTintManager(com.readystatesoftware.systembartint.SystemBarTintManager) Build(android.os.Build) PreferenceManager(android.preference.PreferenceManager) WebView(android.webkit.WebView) ShuttleUtils(com.simplecity.amp_library.utils.ShuttleUtils) TargetApi(android.annotation.TargetApi) TabsAdapter(com.simplecity.amp_library.ui.adapters.TabsAdapter) ItemTouchHelperCallback(com.simplecity.amp_library.ui.recyclerview.ItemTouchHelperCallback) InsetDrawable(android.graphics.drawable.InsetDrawable) AsyncTask(android.os.AsyncTask) ComponentName(android.content.ComponentName) LayoutInflater(android.view.LayoutInflater) MainActivity(com.simplecity.amp_library.ui.activities.MainActivity) IntentCompat(android.support.v4.content.IntentCompat) ColorPalette(com.simplecity.amp_library.utils.ColorPalette) LinearLayoutManager(android.support.v7.widget.LinearLayoutManager) BuildConfig(com.simplecity.amp_library.BuildConfig) ViewGroup(android.view.ViewGroup) WhitelistHelper(com.simplecity.amp_library.sql.databases.WhitelistHelper) SettingsManager(com.simplecity.amp_library.utils.SettingsManager) DialogUtils(com.simplecity.amp_library.utils.DialogUtils) MusicUtils(com.simplecity.amp_library.utils.MusicUtils) RecyclerView(android.support.v7.widget.RecyclerView) ShuttleApplication(com.simplecity.amp_library.ShuttleApplication) BlacklistHelper(com.simplecity.amp_library.sql.databases.BlacklistHelper) PreferenceGroup(android.preference.PreferenceGroup) Glide(com.bumptech.glide.Glide) SharedPreferences(android.content.SharedPreferences) Preference(android.preference.Preference) SettingsActivity(com.simplecity.amp_library.ui.activities.SettingsActivity) PreferenceScreen(android.preference.PreferenceScreen) CheckBoxPreference(android.preference.CheckBoxPreference) Intent(android.content.Intent) SystemBarTintManager(com.readystatesoftware.systembartint.SystemBarTintManager) LinearLayoutManager(android.support.v7.widget.LinearLayoutManager) TabsAdapter(com.simplecity.amp_library.ui.adapters.TabsAdapter) View(android.view.View) WebView(android.webkit.WebView) RecyclerView(android.support.v7.widget.RecyclerView) ItemTouchHelperCallback(com.simplecity.amp_library.ui.recyclerview.ItemTouchHelperCallback) ItemTouchHelper(android.support.v7.widget.helper.ItemTouchHelper) CheckBoxPreference(android.preference.CheckBoxPreference) Preference(android.preference.Preference) RecyclerView(android.support.v7.widget.RecyclerView) ComponentName(android.content.ComponentName) PreferenceGroup(android.preference.PreferenceGroup) WebView(android.webkit.WebView) SettingsActivity(com.simplecity.amp_library.ui.activities.SettingsActivity) CategoryItem(com.simplecity.amp_library.model.CategoryItem)

Example 8 with PreferenceGroup

use of android.support.v7.preference.PreferenceGroup in project android_packages_apps_Settings by LineageOS.

the class AccountPreferenceController method updateProfileUi.

private void updateProfileUi(final UserInfo userInfo) {
    if (mParent.getPreferenceManager() == null) {
        return;
    }
    final ProfileData data = mProfiles.get(userInfo.id);
    if (data != null) {
        data.pendingRemoval = false;
        if (userInfo.isEnabled()) {
            // recreate the authentication helper to refresh the list of enabled accounts
            data.authenticatorHelper = new AuthenticatorHelper(mContext, userInfo.getUserHandle(), this);
        }
        return;
    }
    final Context context = mContext;
    final ProfileData profileData = new ProfileData();
    profileData.userInfo = userInfo;
    AccessiblePreferenceCategory preferenceGroup = mHelper.createAccessiblePreferenceCategory(mParent.getPreferenceManager().getContext());
    preferenceGroup.setOrder(mAccountProfileOrder++);
    if (isSingleProfile()) {
        preferenceGroup.setTitle(context.getString(R.string.account_for_section_header, userInfo.name));
        preferenceGroup.setContentDescription(mContext.getString(R.string.account_settings));
    } else if (userInfo.isManagedProfile()) {
        preferenceGroup.setTitle(R.string.category_work);
        String workGroupSummary = getWorkGroupSummary(context, userInfo);
        preferenceGroup.setSummary(workGroupSummary);
        preferenceGroup.setContentDescription(mContext.getString(R.string.accessibility_category_work, workGroupSummary));
        profileData.removeWorkProfilePreference = newRemoveWorkProfilePreference(context);
        mHelper.enforceRestrictionOnPreference(profileData.removeWorkProfilePreference, DISALLOW_REMOVE_MANAGED_PROFILE, UserHandle.myUserId());
        profileData.managedProfilePreference = newManagedProfileSettings();
    } else {
        preferenceGroup.setTitle(R.string.category_personal);
        preferenceGroup.setContentDescription(mContext.getString(R.string.accessibility_category_personal));
    }
    final PreferenceScreen screen = mParent.getPreferenceScreen();
    if (screen != null) {
        screen.addPreference(preferenceGroup);
    }
    profileData.preferenceGroup = preferenceGroup;
    if (userInfo.isEnabled()) {
        profileData.authenticatorHelper = new AuthenticatorHelper(context, userInfo.getUserHandle(), this);
        profileData.addAccountPreference = newAddAccountPreference(context);
        mHelper.enforceRestrictionOnPreference(profileData.addAccountPreference, DISALLOW_MODIFY_ACCOUNTS, userInfo.id);
    }
    mProfiles.put(userInfo.id, profileData);
    new SearchFeatureProviderImpl().getIndexingManager(mContext).updateFromClassNameResource(UserAndAccountDashboardFragment.class.getName(), true);
}
Also used : Context(android.content.Context) AuthenticatorHelper(com.android.settingslib.accounts.AuthenticatorHelper) PreferenceScreen(android.support.v7.preference.PreferenceScreen) SearchFeatureProviderImpl(com.android.settings.search.SearchFeatureProviderImpl) AccessiblePreferenceCategory(com.android.settings.AccessiblePreferenceCategory)

Example 9 with PreferenceGroup

use of android.support.v7.preference.PreferenceGroup in project android_packages_apps_Settings by LineageOS.

the class AccountTypePreferenceLoader method updatePreferenceIntents.

/**
 * Recursively filters through the preference list provided by GoogleLoginService.
 *
 * This method removes all the invalid intent from the list, adds account name as extra into the
 * intent, and hack the location settings to start it as a fragment.
 */
public void updatePreferenceIntents(PreferenceGroup prefs, final String acccountType, Account account) {
    final PackageManager pm = mFragment.getActivity().getPackageManager();
    for (int i = 0; i < prefs.getPreferenceCount(); ) {
        Preference pref = prefs.getPreference(i);
        if (pref instanceof PreferenceGroup) {
            updatePreferenceIntents((PreferenceGroup) pref, acccountType, account);
        }
        Intent intent = pref.getIntent();
        if (intent != null) {
            // preference click event here directly.
            if (intent.getAction().equals(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS)) {
                // The OnPreferenceClickListener overrides the click event completely. No intent
                // will get fired.
                pref.setOnPreferenceClickListener(new FragmentStarter(LocationSettings.class.getName(), R.string.location_settings_title));
            } else {
                ResolveInfo ri = pm.resolveActivityAsUser(intent, PackageManager.MATCH_DEFAULT_ONLY, mUserHandle.getIdentifier());
                if (ri == null) {
                    prefs.removePreference(pref);
                    continue;
                }
                intent.putExtra(ACCOUNT_KEY, account);
                intent.setFlags(intent.getFlags() | Intent.FLAG_ACTIVITY_NEW_TASK);
                pref.setOnPreferenceClickListener(new OnPreferenceClickListener() {

                    @Override
                    public boolean onPreferenceClick(Preference preference) {
                        Intent prefIntent = preference.getIntent();
                        /*
                                 * Check the intent to see if it resolves to a exported=false
                                 * activity that doesn't share a uid with the authenticator.
                                 *
                                 * Otherwise the intent is considered unsafe in that it will be
                                 * exploiting the fact that settings has system privileges.
                                 */
                        if (isSafeIntent(pm, prefIntent, acccountType)) {
                            mFragment.getActivity().startActivityAsUser(prefIntent, mUserHandle);
                        } else {
                            Log.e(TAG, "Refusing to launch authenticator intent because" + "it exploits Settings permissions: " + prefIntent);
                        }
                        return true;
                    }
                });
            }
        }
        i++;
    }
}
Also used : ResolveInfo(android.content.pm.ResolveInfo) OnPreferenceClickListener(android.support.v7.preference.Preference.OnPreferenceClickListener) PackageManager(android.content.pm.PackageManager) Preference(android.support.v7.preference.Preference) PreferenceGroup(android.support.v7.preference.PreferenceGroup) Intent(android.content.Intent)

Example 10 with PreferenceGroup

use of android.support.v7.preference.PreferenceGroup in project android_packages_apps_Settings by LineageOS.

the class EncryptionAndCredential method createPreferenceHierarchy.

/**
 * Important!
 *
 * Don't forget to update the SecuritySearchIndexProvider if you are doing any change in the
 * logic or adding/removing preferences here.
 */
private PreferenceScreen createPreferenceHierarchy() {
    PreferenceScreen root = getPreferenceScreen();
    if (root != null) {
        root.removeAll();
    }
    addPreferencesFromResource(R.xml.encryption_and_credential);
    root = getPreferenceScreen();
    // Add options for device encryption
    mIsAdmin = mUm.isAdminUser();
    if (mIsAdmin) {
        if (LockPatternUtils.isDeviceEncryptionEnabled()) {
            // The device is currently encrypted.
            addPreferencesFromResource(R.xml.security_settings_encrypted);
        } else {
            // This device supports encryption but isn't encrypted.
            addPreferencesFromResource(R.xml.security_settings_unencrypted);
        }
    }
    // Credential storage
    // needs to be initialized for onResume()
    mKeyStore = KeyStore.getInstance();
    if (!RestrictedLockUtils.hasBaseUserRestriction(getActivity(), UserManager.DISALLOW_CONFIG_CREDENTIALS, MY_USER_ID)) {
        RestrictedPreference userCredentials = (RestrictedPreference) root.findPreference(KEY_USER_CREDENTIALS);
        userCredentials.checkRestrictionAndSetDisabled(UserManager.DISALLOW_CONFIG_CREDENTIALS);
        RestrictedPreference credentialStorageType = (RestrictedPreference) root.findPreference(KEY_CREDENTIAL_STORAGE_TYPE);
        credentialStorageType.checkRestrictionAndSetDisabled(UserManager.DISALLOW_CONFIG_CREDENTIALS);
        RestrictedPreference installCredentials = (RestrictedPreference) root.findPreference(KEY_CREDENTIALS_INSTALL);
        installCredentials.checkRestrictionAndSetDisabled(UserManager.DISALLOW_CONFIG_CREDENTIALS);
        mResetCredentials = (RestrictedPreference) root.findPreference(KEY_RESET_CREDENTIALS);
        mResetCredentials.checkRestrictionAndSetDisabled(UserManager.DISALLOW_CONFIG_CREDENTIALS);
        final int storageSummaryRes = mKeyStore.isHardwareBacked() ? R.string.credential_storage_type_hardware : R.string.credential_storage_type_software;
        credentialStorageType.setSummary(storageSummaryRes);
    } else {
        PreferenceGroup credentialsManager = (PreferenceGroup) root.findPreference(KEY_CREDENTIALS_MANAGER);
        credentialsManager.removePreference(root.findPreference(KEY_RESET_CREDENTIALS));
        credentialsManager.removePreference(root.findPreference(KEY_CREDENTIALS_INSTALL));
        credentialsManager.removePreference(root.findPreference(KEY_CREDENTIAL_STORAGE_TYPE));
        credentialsManager.removePreference(root.findPreference(KEY_USER_CREDENTIALS));
    }
    return root;
}
Also used : PreferenceScreen(android.support.v7.preference.PreferenceScreen) RestrictedPreference(com.android.settingslib.RestrictedPreference) PreferenceGroup(android.support.v7.preference.PreferenceGroup)

Aggregations

PreferenceGroup (android.support.v7.preference.PreferenceGroup)140 Preference (android.support.v7.preference.Preference)114 Context (android.content.Context)67 Test (org.junit.Test)54 PreferenceManager (android.support.v7.preference.PreferenceManager)50 ArrayList (java.util.ArrayList)50 UserInfo (android.content.pm.UserInfo)48 PreferenceScreen (android.support.v7.preference.PreferenceScreen)44 AccessiblePreferenceCategory (com.android.settings.AccessiblePreferenceCategory)42 Account (android.accounts.Account)36 AuthenticatorDescription (android.accounts.AuthenticatorDescription)36 UserHandle (android.os.UserHandle)36 Intent (android.content.Intent)27 SwitchPreference (android.support.v14.preference.SwitchPreference)21 PreferenceCategory (android.support.v7.preference.PreferenceCategory)20 PackageManager (android.content.pm.PackageManager)16 ResolveInfo (android.content.pm.ResolveInfo)16 TelephonyManager (android.telephony.TelephonyManager)16 RestrictedSwitchPreference (com.android.settingslib.RestrictedSwitchPreference)15 Activity (android.app.Activity)14