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

Commit 0181643b authored by George Chang's avatar George Chang Committed by Android (Google) Code Review
Browse files

Merge "[NFC] Disable contactless payments when no payment application installed" into rvc-dev

parents 545f08e8 28895f28
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -7438,6 +7438,8 @@
    <string name="connected_devices_dashboard_no_driving_mode_no_nfc_summary">Bluetooth</string>
    <!-- Summary for Tap & pay settings, explaning a few important settings under it [CHAR LIMIT=NONE]-->
    <string name="nfc_and_payment_settings_payment_off_nfc_off_summary">Unavailable because NFC is off</string>
    <!-- Summary for Tap & pay settings, explaning a few important settings under it [CHAR LIMIT=NONE]-->
    <string name="nfc_and_payment_settings_no_payment_installed_summary">To use, first install a payment app</string>
    <!-- Title for setting tile leading to Apps & Notification settings [CHAR LIMIT=40]-->
    <string name="app_and_notification_dashboard_title">Apps &amp; notifications</string>
    <!-- Summary for Apps & Notification settings, explaining a few important settings under it [CHAR LIMIT=NONE]-->
+27 −2
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.settings.applications.specialaccess;

import android.content.Context;
import android.nfc.NfcAdapter;
import android.nfc.cardemulation.CardEmulation;

import androidx.preference.Preference;

@@ -30,10 +31,14 @@ import com.android.settings.nfc.BaseNfcEnabler;
 * preference is updated.
 */
public class PaymentSettingsEnabler extends BaseNfcEnabler {
    private final CardEmulation mCardEmuManager;
    private final Preference mPreference;
    boolean mIsPaymentAvailable;

    public PaymentSettingsEnabler(Context context, Preference preference) {
        super(context);
        mCardEmuManager = CardEmulation.getInstance(super.mNfcAdapter);
        mIsPaymentAvailable = false;
        mPreference = preference;
    }

@@ -46,9 +51,29 @@ public class PaymentSettingsEnabler extends BaseNfcEnabler {
                mPreference.setEnabled(false);
                break;
            case NfcAdapter.STATE_ON:
                if (mIsPaymentAvailable) {
                    mPreference.setSummary(null);
                    mPreference.setEnabled(true);
                } else {
                    mPreference.setSummary(
                            R.string.nfc_and_payment_settings_no_payment_installed_summary);

                    mPreference.setEnabled(false);
                }
                break;
        }
    }

    @Override
    public void resume() {
        if (!isNfcAvailable()) {
            return;
        }
        if (mCardEmuManager.getServices(CardEmulation.CATEGORY_PAYMENT).isEmpty()) {
            mIsPaymentAvailable = false;
        } else {
            mIsPaymentAvailable = true;
        }
        super.resume();
    }
}