2014-06-09 11 views
5

Was das Wichtigste in NFC HCE Anwendung anzupassen, ist es sichtbar unter Einstellungen NFC Tap zu erhalten und PayAnwendung nicht sichtbar in Tap and Pay

Code gibt folgend gilt für die App, so ist es die Zahlung fähig:

boolean isDefault = CardEmulation 
       .getInstance(NfcAdapter.getDefaultAdapter(this)) 
       .isDefaultServiceForCategory(
         new ComponentName(this, MyPaymentService.class), 
         CardEmulation.CATEGORY_PAYMENT); 

Service-Erklärung 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> 

Ich vermisse etwas, aber nicht sicher, was und wo es zu setzen.

Danke.

+0

Können Sie Ihr App-Manifest und die Host-Apdu-Service-XML-Datei posten? –

Antwort

7

Um im Tap-and-Pay-Menü angezeigt zu werden, muss eine HCE-App eine Bannergrafik bereitstellen. Sie würden die Grafik in den Host-apdu-Service XML umfassen das android:apduServiceBanner Attribut:

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

Der Service Banner eine Grafikdatei (zum Beispiel einer .png-Datei) sein sollte, mit den Abmessungen von 260 x 96 Pixel.

+0

Es ist kein Text mit dem Banner verfügbar? – Niko

+0

Ich bin mir nicht 100% sicher, aber ich denke nicht. –

+2

Es ist nur ein Banner verfügbar, es wird kein Text angezeigt. – patrickandroid

1

Mit diesem Google-Beispiel project habe ich versucht, die Vorschläge von @Michael Rowland hinzufügen (z. B. Hinzufügen von Android: ApduServiceBanner, Kategorie und Beschreibung).

Als Ergebnis wird die Grafik im Bildschirm Einstellungen für das Tippen und Bezahlen angezeigt, nicht jedoch für den Text. Ich habe ein Problem mit dem Beispielprojekt protokolliert, erwarte aber keine Auflösung.

Die aktuelle Problemumgehung besteht darin, eine Zeichner-Zeichenkette apduServiceBanner zu erstellen, in der der Text in das Zeichenobjekt integriert ist.

1

Zusätzliche Informationen - Wenn Sie die folgenden zwei Zeilen im Manifest vergessen, wird die Anwendung auch nicht im Menü "Tippen und bezahlen" angezeigt.

<uses-feature android:name="android.hardware.nfc.hce" android:required="true" /> 
<uses-permission android:name="android.permission.NFC" />