Do not index NFC for search if NFC is not present

Bug: 35657617
Test: manual
Change-Id: I320b46d4d384611725d2dea628cf42180b8018ac
(cherry picked from commit 4d03c5b48980faba7eff60267696da346f595714)
diff --git a/src/com/android/settings/nfc/PaymentSettings.java b/src/com/android/settings/nfc/PaymentSettings.java
index 37a77f9..a54ba4e 100644
--- a/src/com/android/settings/nfc/PaymentSettings.java
+++ b/src/com/android/settings/nfc/PaymentSettings.java
@@ -19,6 +19,7 @@
 import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
+import android.content.pm.PackageManager;
 import android.content.res.Resources;
 import android.nfc.NfcAdapter;
 import android.os.Bundle;
@@ -45,6 +46,9 @@
 
 public class PaymentSettings extends SettingsPreferenceFragment implements Indexable {
     public static final String TAG = "PaymentSettings";
+
+    static final String PAYMENT_KEY = "payment";
+
     private PaymentBackend mPaymentBackend;
 
     @Override
@@ -66,7 +70,7 @@
         if (appInfos != null && appInfos.size() > 0) {
             NfcPaymentPreference preference =
                     new NfcPaymentPreference(getPrefContext(), mPaymentBackend);
-            preference.setKey("payment");
+            preference.setKey(PAYMENT_KEY);
             screen.addPreference(preference);
             NfcForegroundPreference foreground = new NfcForegroundPreference(getPrefContext(),
                     mPaymentBackend);
@@ -154,5 +158,14 @@
                 result.add(data);
                 return result;
             }
+
+            @Override
+            public List<String> getNonIndexableKeys(Context context) {
+                final PackageManager pm = context.getPackageManager();
+                if (pm.hasSystemFeature(PackageManager.FEATURE_NFC)) return null;
+                final List<String> nonVisibleKeys = new ArrayList<String>();
+                nonVisibleKeys.add(PAYMENT_KEY);
+                return nonVisibleKeys;
+            }
     };
 }