在NFC HCE应用程序中进行调整以使其在NFC Tap and Pay
设置下可见时,关键是什么?以下代码为应用返回true,因此可以付款:
boolean isDefault = CardEmulation
.getInstance(NfcAdapter.getDefaultAdapter(this))
.isDefaultServiceForCategory(
new ComponentName(this, MyPaymentService.class),
CardEmulation.CATEGORY_PAYMENT);
清单中的服务声明:
<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>
我错过了一些东西,但不确定放置它的内容和位置。
感谢。
答案 0 :(得分:8)
要在点击付费菜单中显示,HCE应用必须提供横幅图形。您可以使用android:apduServiceBanner
属性将图形包含在host-apdu-service XML中:
<host-apdu-service xmlns:android="http://schemas.android.com/apk/res/android"
android:requireDeviceUnlock="true"
android:apduServiceBanner="@drawable/servicebanner">
<aid-group android:category="payment"
android:description="@string/paymentGroup" >
<aid-filter ... />
</aid-group>
</host-apdu-service>
服务横幅应为尺寸为260 x 96像素的图形文件(例如.png文件)。
答案 1 :(得分:1)
使用此Google示例project,我尝试添加@Michael Roland的建议(例如添加android:apduServiceBanner,类别和说明)。
因此,图形显示在“点按和付费设置”屏幕中,但不显示在文本中。 我记录了示例项目的一个问题,但不要指望任何解决方案。
目前的解决方法是创建一个apduServiceBanner drawable,其中包含内置于drawable中的文本。
答案 2 :(得分:1)
其他信息 - 如果您在清单中忘记了以下两行,则该应用程序也不会显示在&#34;点按并付款&#34;菜单。
<uses-feature android:name="android.hardware.nfc.hce" android:required="true" />
<uses-permission android:name="android.permission.NFC" />