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/accessibility/AccessibilityControlTimeoutPreferenceFragment.java b/src/com/android/settings/accessibility/AccessibilityControlTimeoutPreferenceFragment.java index 0550908f3f2..1e2a2b47b8a 100644 --- a/src/com/android/settings/accessibility/AccessibilityControlTimeoutPreferenceFragment.java +++ b/src/com/android/settings/accessibility/AccessibilityControlTimeoutPreferenceFragment.java @@ -32,7 +32,8 @@ import com.android.settingslib.search.SearchIndexable; import java.util.ArrayList; import java.util.List; -@SearchIndexable +/** Settings fragment containing accessibility control timeout preference. */ +@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC) public final class AccessibilityControlTimeoutPreferenceFragment extends DashboardFragment implements AccessibilityTimeoutController.OnChangeListener { diff --git a/src/com/android/settings/accessibility/AccessibilitySettings.java b/src/com/android/settings/accessibility/AccessibilitySettings.java index 1e3944eb1f5..3b3c2c544c4 100644 --- a/src/com/android/settings/accessibility/AccessibilitySettings.java +++ b/src/com/android/settings/accessibility/AccessibilitySettings.java @@ -65,10 +65,8 @@ import java.util.List; import java.util.Map; import java.util.Set; -/** - * Activity with the accessibility settings. - */ -@SearchIndexable +/** Activity with the accessibility settings. */ +@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC) public class AccessibilitySettings extends DashboardFragment { private static final String TAG = "AccessibilitySettings"; diff --git a/src/com/android/settings/accessibility/CaptionAppearanceFragment.java b/src/com/android/settings/accessibility/CaptionAppearanceFragment.java index 6c2b593c471..d780ac5d87f 100644 --- a/src/com/android/settings/accessibility/CaptionAppearanceFragment.java +++ b/src/com/android/settings/accessibility/CaptionAppearanceFragment.java @@ -44,10 +44,8 @@ import java.util.ArrayList; import java.util.List; import java.util.Locale; -/** - * Settings fragment containing font style of captioning properties. - */ -@SearchIndexable +/** Settings fragment containing font style of captioning properties. */ +@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC) public class CaptionAppearanceFragment extends SettingsPreferenceFragment implements OnPreferenceChangeListener, OnValueChangedListener { private static final String PREF_CAPTION_PREVIEW = "caption_preview"; diff --git a/src/com/android/settings/accessibility/CaptionMoreOptionsFragment.java b/src/com/android/settings/accessibility/CaptionMoreOptionsFragment.java index d3fd407436a..8ac82e5f206 100644 --- a/src/com/android/settings/accessibility/CaptionMoreOptionsFragment.java +++ b/src/com/android/settings/accessibility/CaptionMoreOptionsFragment.java @@ -30,10 +30,8 @@ import com.android.settings.SettingsPreferenceFragment; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settingslib.search.SearchIndexable; -/** - * Settings fragment containing more options of captioning properties. - */ -@SearchIndexable +/** Settings fragment containing more options of captioning properties. */ +@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC) public class CaptionMoreOptionsFragment extends SettingsPreferenceFragment implements Preference.OnPreferenceChangeListener { private static final String PREF_LOCALE = "captioning_locale"; diff --git a/src/com/android/settings/accessibility/CaptionPropertiesFragment.java b/src/com/android/settings/accessibility/CaptionPropertiesFragment.java index 43539fd2769..40eb2cd7ef7 100644 --- a/src/com/android/settings/accessibility/CaptionPropertiesFragment.java +++ b/src/com/android/settings/accessibility/CaptionPropertiesFragment.java @@ -37,10 +37,8 @@ import com.google.common.primitives.Floats; import java.util.ArrayList; import java.util.List; -/** - * Settings fragment containing captioning properties. - */ -@SearchIndexable +/** Settings fragment containing captioning properties. */ +@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC) public class CaptionPropertiesFragment extends SettingsPreferenceFragment implements OnPreferenceChangeListener { private static final String PREF_SWITCH = "captioning_preference_switch"; diff --git a/src/com/android/settings/accessibility/MagnificationPreferenceFragment.java b/src/com/android/settings/accessibility/MagnificationPreferenceFragment.java index 4c7d2a4f14c..0e6d3becc57 100644 --- a/src/com/android/settings/accessibility/MagnificationPreferenceFragment.java +++ b/src/com/android/settings/accessibility/MagnificationPreferenceFragment.java @@ -39,12 +39,11 @@ import com.android.settingslib.search.SearchIndexable; import java.util.List; -@SearchIndexable +/** Settings fragment containing magnification preference. */ +@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC) public final class MagnificationPreferenceFragment extends DashboardFragment { - @VisibleForTesting - static final int ON = 1; - @VisibleForTesting - static final int OFF = 0; + @VisibleForTesting static final int ON = 1; + @VisibleForTesting static final int OFF = 0; private static final String TAG = "MagnificationPreferenceFragment"; @@ -169,4 +168,4 @@ public final class MagnificationPreferenceFragment extends DashboardFragment { return isApplicable(context.getResources()); } }; -} \ No newline at end of file +} diff --git a/src/com/android/settings/accessibility/MagnificationSettingsFragment.java b/src/com/android/settings/accessibility/MagnificationSettingsFragment.java index 0e766b4cf5d..04e8036256e 100644 --- a/src/com/android/settings/accessibility/MagnificationSettingsFragment.java +++ b/src/com/android/settings/accessibility/MagnificationSettingsFragment.java @@ -40,7 +40,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; /** Settings page for magnification. */ -@SearchIndexable +@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC) public class MagnificationSettingsFragment extends DashboardFragment { private static final String TAG = "MagnificationSettingsFragment"; diff --git a/src/com/android/settings/accessibility/ToggleAutoclickPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleAutoclickPreferenceFragment.java index 6624457ad98..11fe80e5355 100644 --- a/src/com/android/settings/accessibility/ToggleAutoclickPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleAutoclickPreferenceFragment.java @@ -43,7 +43,7 @@ import java.util.List; * Fragment for preference screen for settings related to Automatically click after mouse stops * feature. */ -@SearchIndexable +@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC) public class ToggleAutoclickPreferenceFragment extends DashboardFragment implements ToggleAutoclickPreferenceController.OnChangeListener { diff --git a/src/com/android/settings/accessibility/ToggleColorInversionPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleColorInversionPreferenceFragment.java index 833c9f181ea..07ff7203013 100644 --- a/src/com/android/settings/accessibility/ToggleColorInversionPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleColorInversionPreferenceFragment.java @@ -39,7 +39,7 @@ import java.util.ArrayList; import java.util.List; /** Settings page for color inversion. */ -@SearchIndexable +@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC) public class ToggleColorInversionPreferenceFragment extends ToggleFeaturePreferenceFragment { private static final String ENABLED = Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED; diff --git a/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java index 9b8b1176513..5b9c55b3a93 100644 --- a/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java @@ -44,7 +44,8 @@ import com.android.settingslib.search.SearchIndexable; import java.util.ArrayList; import java.util.List; -@SearchIndexable +/** Settings for daltonizer. */ +@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC) public final class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePreferenceFragment implements DaltonizerRadioButtonPreferenceController.OnChangeListener { diff --git a/src/com/android/settings/accessibility/VibrationSettings.java b/src/com/android/settings/accessibility/VibrationSettings.java index cfa70b6022e..90ee11cf57d 100644 --- a/src/com/android/settings/accessibility/VibrationSettings.java +++ b/src/com/android/settings/accessibility/VibrationSettings.java @@ -23,10 +23,8 @@ import com.android.settings.dashboard.DashboardFragment; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settingslib.search.SearchIndexable; -/** - * Accessibility settings for the vibration. - */ -@SearchIndexable +/** Accessibility settings for the vibration. */ +@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC) public class VibrationSettings extends DashboardFragment { private static final String TAG = "VibrationSettings"; 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(); + } } diff --git a/src/com/android/settings/connecteddevice/BluetoothDashboardFragment.java b/src/com/android/settings/connecteddevice/BluetoothDashboardFragment.java index 27b5c4a1ef0..3e64de5a473 100644 --- a/src/com/android/settings/connecteddevice/BluetoothDashboardFragment.java +++ b/src/com/android/settings/connecteddevice/BluetoothDashboardFragment.java @@ -35,7 +35,7 @@ import com.android.settingslib.widget.FooterPreference; * Dedicated screen for allowing the user to toggle bluetooth which displays relevant information to * the user based on related settings such as bluetooth scanning. */ -@SearchIndexable(forTarget = SearchIndexable.ALL) +@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC) public class BluetoothDashboardFragment extends DashboardFragment { private static final String TAG = "BluetoothDashboardFrag"; diff --git a/src/com/android/settings/connecteddevice/NfcAndPaymentFragmentController.java b/src/com/android/settings/connecteddevice/NfcAndPaymentFragmentController.java index fef1922fa30..17958c96010 100644 --- a/src/com/android/settings/connecteddevice/NfcAndPaymentFragmentController.java +++ b/src/com/android/settings/connecteddevice/NfcAndPaymentFragmentController.java @@ -47,9 +47,6 @@ public class NfcAndPaymentFragmentController extends BasePreferenceController { PackageManager.FEATURE_NFC_HOST_CARD_EMULATION)) { return UNSUPPORTED_ON_DEVICE; } - if (!mUserManager.isAdminUser()) { - return DISABLED_FOR_USER; - } return AVAILABLE; } diff --git a/src/com/android/settings/system/ResetDashboardFragment.java b/src/com/android/settings/system/ResetDashboardFragment.java index 5e0ead49383..024db146f59 100644 --- a/src/com/android/settings/system/ResetDashboardFragment.java +++ b/src/com/android/settings/system/ResetDashboardFragment.java @@ -18,14 +18,12 @@ package com.android.settings.system; import android.app.settings.SettingsEnums; import android.content.Context; -import android.provider.SearchIndexableResource; import com.android.settings.R; import com.android.settings.applications.manageapplications.ResetAppPrefPreferenceController; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.network.NetworkResetPreferenceController; import com.android.settings.search.BaseSearchIndexProvider; -import com.android.settingslib.search.Indexable; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.search.SearchIndexable; @@ -33,7 +31,8 @@ import com.android.settingslib.search.SearchIndexable; import java.util.ArrayList; import java.util.List; -@SearchIndexable +/** Settings fragment containing reset options. */ +@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC) public class ResetDashboardFragment extends DashboardFragment { private static final String TAG = "ResetDashboardFragment"; diff --git a/tests/robotests/src/com/android/settings/connecteddevice/NfcAndPaymentFragmentControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/NfcAndPaymentFragmentControllerTest.java index fdedc887a27..ffaade3fda3 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/NfcAndPaymentFragmentControllerTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/NfcAndPaymentFragmentControllerTest.java @@ -85,16 +85,6 @@ public class NfcAndPaymentFragmentControllerTest { .isEqualTo(NfcAndPaymentFragmentController.UNSUPPORTED_ON_DEVICE); } - @Test - public void getAvailabilityStatus_notAdminUser_shouldReturnDisabled() { - when(mPackageManager.hasSystemFeature(anyString())).thenReturn(true); - when(mUserManager.isAdminUser()).thenReturn(false); - when(mNfcAdapter.isEnabled()).thenReturn(true); - - assertThat(mController.getAvailabilityStatus()) - .isEqualTo(NfcAndPaymentFragmentController.DISABLED_FOR_USER); - } - @Test public void getSummary_nfcOn_shouldProvideOnSummary() { when(mNfcAdapter.isEnabled()).thenReturn(true);