What is the key thing to adjust in NFC HCE application to get it visible under settings NFC Tap and Pay
Following code returns true for the app, so it's capable of payment:
boolean isDefault = CardEmulation
.getInstance(NfcAdapter.getDefaultAdapter(this))
.isDefaultServiceForCategory(
new ComponentName(this, MyPaymentService.class),
CardEmulation.CATEGORY_PAYMENT);
Service declaration in manifest:
<service
android:name="my.package.MyPaymentService"
android:exported="true"
android:permission="android.permission.BIND_NFC_SERVICE" >
<intent-filter>
<action android:name="android.nfc.cardemulation.action.HOST_APDU_SERVICE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data
android:name="android.nfc.cardemulation.host_apdu_service"
android:resource="@xml/apduservice" />
</service>
apduservice:
<host-apdu-service xmlns:android="http://schemas.android.com/apk/res/android"
android:requireDeviceUnlock="true" >
<aid-group
android:category="payment"
android:description="@string/paymentGroup" >
<aid-filter
android:name="325041592E5359532E4444463031"
android:description="@string/ppse" />
<aid-filter
android:name="A0000000041010"
android:description="@string/mastercard" />
<aid-filter
android:name="A0000000031010"
android:description="@string/visa" />
<aid-filter
android:name="A000000003101001"
android:description="@string/visa" />
<aid-filter
android:name="A0000002771010"
android:description="@string/interac" />
</aid-group>
</host-apdu-service>
I'm missing something but not sure what and where to put it.
Thanks.