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