应用程序在点击和付款中不可见

时间:2014-06-09 10:12:34

标签: android nfc hce android-tap-and-pay

在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>

我错过了一些东西,但不确定放置它的内容和位置。

感谢。

3 个答案:

答案 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" />