diff --git a/res/values/strings.xml b/res/values/strings.xml index 10aafc47904..341ac9075bc 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -7438,6 +7438,8 @@ Bluetooth Unavailable because NFC is off + + To use, first install a payment app Apps & notifications diff --git a/src/com/android/settings/applications/specialaccess/PaymentSettingsEnabler.java b/src/com/android/settings/applications/specialaccess/PaymentSettingsEnabler.java index 6c5227d4307..597705ca170 100644 --- a/src/com/android/settings/applications/specialaccess/PaymentSettingsEnabler.java +++ b/src/com/android/settings/applications/specialaccess/PaymentSettingsEnabler.java @@ -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: - mPreference.setSummary(null); - mPreference.setEnabled(true); + 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(); + } }