Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 75918503 authored by Michael Bestas's avatar Michael Bestas
Browse files

Properly remove NFC payment preference

Change-Id: Id8c9098241e018da37da93b5bd8d9c29307402c0
parent 2055e592
Loading
Loading
Loading
Loading
+12 −5
Original line number Diff line number Diff line
@@ -235,12 +235,13 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde
        mAirplaneModePreference = (SwitchPreference) findPreference(KEY_TOGGLE_AIRPLANE);
        SwitchPreference nfc = (SwitchPreference) findPreference(KEY_TOGGLE_NFC);
        PreferenceScreen androidBeam = (PreferenceScreen) findPreference(KEY_ANDROID_BEAM_SETTINGS);
        PreferenceScreen nfcPayment = (PreferenceScreen) findPreference(KEY_NFC_PAYMENT_SETTINGS);
        SwitchPreference nsd = (SwitchPreference) findPreference(KEY_TOGGLE_NSD);
        PreferenceCategory nfcCategory = (PreferenceCategory)
                findPreference(KEY_NFC_CATEGORY_SETTINGS);

        mAirplaneModeEnabler = new AirplaneModeEnabler(activity, mAirplaneModePreference);
        mNfcEnabler = new NfcEnabler(activity, nfc, androidBeam);
        mNfcEnabler = new NfcEnabler(activity, nfc, androidBeam, nfcPayment);

        mButtonWfc = (PreferenceScreen) findPreference(KEY_WFC_SETTINGS);

@@ -285,14 +286,17 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde
        if (toggleable == null || !toggleable.contains(Settings.Global.RADIO_NFC)) {
            findPreference(KEY_TOGGLE_NFC).setDependency(KEY_TOGGLE_AIRPLANE);
            findPreference(KEY_ANDROID_BEAM_SETTINGS).setDependency(KEY_TOGGLE_AIRPLANE);
            findPreference(KEY_NFC_PAYMENT_SETTINGS).setDependency(KEY_TOGGLE_AIRPLANE);
        }

        // Remove NFC if not available
        mNfcAdapter = NfcAdapter.getDefaultAdapter(activity);
        if (mNfcAdapter == null) {
            getPreferenceScreen().removePreference(nfcCategory);
            removePreference(KEY_NFC_PAYMENT_SETTINGS);
            mNfcEnabler = null;
        } else if (!mPm.hasSystemFeature(PackageManager.FEATURE_NFC_HOST_CARD_EMULATION)) {
            // Only show if we have the HCE feature
            getPreferenceScreen().removePreference(nfcPayment);
        }

        // Remove Mobile Network Settings and Manage Mobile Plan for secondary users,
@@ -301,7 +305,6 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde
                || mUm.hasUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)) {
            removePreference(KEY_MOBILE_NETWORK_SETTINGS);
            removePreference(KEY_MANAGE_MOBILE_PLAN);
            removePreference(KEY_NFC_PAYMENT_SETTINGS);
        }
        // Remove Mobile Network Settings and Manage Mobile Plan
        // if config_show_mobile_plan sets false.
@@ -444,6 +447,7 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde

                result.add(KEY_TOGGLE_NSD);

                final PackageManager pm = context.getPackageManager();
                final UserManager um = (UserManager) context.getSystemService(Context.USER_SERVICE);
                final int myUserId = UserHandle.myUserId();
                final boolean isSecondaryUser = myUserId != UserHandle.USER_OWNER;
@@ -467,6 +471,11 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde
                    if (adapter == null) {
                        result.add(KEY_TOGGLE_NFC);
                        result.add(KEY_ANDROID_BEAM_SETTINGS);
                        result.add(KEY_NFC_PAYMENT_SETTINGS);
                    } else if (!pm.hasSystemFeature(
                            PackageManager.FEATURE_NFC_HOST_CARD_EMULATION)) {
                        // Only show if we have the HCE feature
                        result.add(KEY_NFC_PAYMENT_SETTINGS);
                    }
                }

@@ -487,8 +496,6 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde
                    result.add(KEY_MANAGE_MOBILE_PLAN);
                }

                final PackageManager pm = context.getPackageManager();

                // Remove Airplane Mode settings if it's a stationary device such as a TV.
                if (pm.hasSystemFeature(PackageManager.FEATURE_TELEVISION)) {
                    result.add(KEY_TOGGLE_AIRPLANE);
+8 −1
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ public class NfcEnabler implements Preference.OnPreferenceChangeListener {
    private final Context mContext;
    private final SwitchPreference mSwitch;
    private final PreferenceScreen mAndroidBeam;
    private final PreferenceScreen mNfcPayment;
    private final NfcAdapter mNfcAdapter;
    private final IntentFilter mIntentFilter;
    private boolean mBeamDisallowed;
@@ -53,10 +54,11 @@ public class NfcEnabler implements Preference.OnPreferenceChangeListener {
    };

    public NfcEnabler(Context context, SwitchPreference switchPreference,
            PreferenceScreen androidBeam) {
            PreferenceScreen androidBeam, PreferenceScreen nfcPayment) {
        mContext = context;
        mSwitch = switchPreference;
        mAndroidBeam = androidBeam;
        mNfcPayment = nfcPayment;
        mNfcAdapter = NfcAdapter.getDefaultAdapter(context);
        mBeamDisallowed = ((UserManager) mContext.getSystemService(Context.USER_SERVICE))
                .hasUserRestriction(UserManager.DISALLOW_OUTGOING_BEAM);
@@ -65,6 +67,7 @@ public class NfcEnabler implements Preference.OnPreferenceChangeListener {
            // NFC is not supported
            mSwitch.setEnabled(false);
            mAndroidBeam.setEnabled(false);
            mNfcPayment.setEnabled(false);
            mIntentFilter = null;
            return;
        }
@@ -113,6 +116,7 @@ public class NfcEnabler implements Preference.OnPreferenceChangeListener {
            mSwitch.setEnabled(true);
            mAndroidBeam.setEnabled(false);
            mAndroidBeam.setSummary(R.string.android_beam_disabled_summary);
            mNfcPayment.setEnabled(false);
            break;
        case NfcAdapter.STATE_ON:
            mSwitch.setChecked(true);
@@ -123,16 +127,19 @@ public class NfcEnabler implements Preference.OnPreferenceChangeListener {
            } else {
                mAndroidBeam.setSummary(R.string.android_beam_off_summary);
            }
            mNfcPayment.setEnabled(true);
            break;
        case NfcAdapter.STATE_TURNING_ON:
            mSwitch.setChecked(true);
            mSwitch.setEnabled(false);
            mAndroidBeam.setEnabled(false);
            mNfcPayment.setEnabled(false);
            break;
        case NfcAdapter.STATE_TURNING_OFF:
            mSwitch.setChecked(false);
            mSwitch.setEnabled(false);
            mAndroidBeam.setEnabled(false);
            mNfcPayment.setEnabled(false);
            break;
        }
    }