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

Commit 726ffccb authored by Michael Bestas's avatar Michael Bestas Committed by Gerrit Code Review
Browse files

Properly remove NFC payment preference

Change-Id: Id8c9098241e018da37da93b5bd8d9c29307402c0
parent 45826d5a
Loading
Loading
Loading
Loading
+0 −13
Original line number Diff line number Diff line
@@ -245,7 +245,6 @@ public class SettingsActivity extends Activity
            R.id.about_settings,
            R.id.accessibility_settings,
            R.id.print_settings,
            R.id.nfc_payment_settings,
            R.id.home_settings,
            R.id.status_bar_settings,
            R.id.dashboard,
@@ -1216,18 +1215,6 @@ public class SettingsActivity extends Activity
                            || Utils.isMonkeyRunning()) {
                        removeTile = true;
                    }
                } else if (id == R.id.nfc_payment_settings) {
                    if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_NFC)) {
                        removeTile = true;
                    } else {
                        // Only show if NFC is on and we have the HCE feature
                        NfcAdapter adapter = NfcAdapter.getDefaultAdapter(this);
                        if (adapter == null || !adapter.isEnabled() ||
                                !getPackageManager().hasSystemFeature(
                                        PackageManager.FEATURE_NFC_HOST_CARD_EMULATION)) {
                            removeTile = true;
                        }
                    }
                } else if (id == R.id.print_settings) {
                    boolean hasPrintingSupport = getPackageManager().hasSystemFeature(
                            PackageManager.FEATURE_PRINTING);
+13 −5
Original line number Diff line number Diff line
@@ -269,10 +269,11 @@ public class WirelessSettings extends SettingsPreferenceFragment
        SwitchPreference nfc = (SwitchPreference) findPreference(KEY_TOGGLE_NFC);

        PreferenceScreen androidBeam = (PreferenceScreen) findPreference(KEY_ANDROID_BEAM_SETTINGS);
        PreferenceScreen nfcPayment = (PreferenceScreen) findPreference(KEY_NFC_PAYMENT_SETTINGS);
        CheckBoxPreference nsd = (CheckBoxPreference) findPreference(KEY_TOGGLE_NSD);

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

        mSmsApplicationPreference = (AppListPreference) findPreference(KEY_SMS_APPLICATION);
        mSmsApplicationPreference.setOnPreferenceChangeListener(this);
@@ -319,6 +320,7 @@ public class WirelessSettings extends SettingsPreferenceFragment
        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
@@ -326,8 +328,11 @@ public class WirelessSettings extends SettingsPreferenceFragment
        if (mNfcAdapter == null) {
            getPreferenceScreen().removePreference(nfc);
            getPreferenceScreen().removePreference(androidBeam);
            removePreference(KEY_NFC_PAYMENT_SETTINGS);
            getPreferenceScreen().removePreference(nfcPayment);
            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,
@@ -336,7 +341,6 @@ public class WirelessSettings extends SettingsPreferenceFragment
                || 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.
@@ -489,6 +493,7 @@ public class WirelessSettings extends SettingsPreferenceFragment

                result.add(KEY_TOGGLE_NSD);

                final PackageManager pm = context.getPackageManager();
                final UserManager um = (UserManager) context.getSystemService(Context.USER_SERVICE);
                final boolean isSecondaryUser = UserHandle.myUserId() != UserHandle.USER_OWNER;
                final boolean isWimaxEnabled = !isSecondaryUser && context.getResources().getBoolean(
@@ -509,6 +514,11 @@ public class WirelessSettings extends SettingsPreferenceFragment
                    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);
                    }
                }

@@ -536,8 +546,6 @@ public class WirelessSettings extends SettingsPreferenceFragment
                    result.add(KEY_SMS_APPLICATION);
                }

                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;
        }
    }