2014-06-09 16 views
5

Qual è la cosa fondamentale per regolare in applicazione NFC HCE per farlo visibile in Impostazioni NFC tocca e pagaapplicazione non visibile in tocca e paga

codice seguente restituisce vero per l'applicazione, in modo che sia in grado di pagamento:

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

dichiarazione di servizio in palese:

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

Mi manca qualcosa ma non sono sicuro di cosa e dove metterlo.

Grazie.

+0

Potrebbe pubblicare il manifest dell'applicazione e il file XML host-apdu-service? –

risposta

7

Per essere visualizzato nel menu "tocca e paga", un'app HCE deve fornire un banner grafico per l'. Si potrebbe includere l'immagine nel XML host-APDU-service utilizzando l'attributo android:apduServiceBanner:

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

Il banner del servizio dovrebbe essere un file grafico (ad esempio un file .png) con dimensioni di 260 x 96 pixel.

+0

Non c'è nessun testo disponibile insieme al banner? – Niko

+0

Non sono sicuro al 100% ma non credo. –

+2

C'è solo un banner disponibile, nessun testo è mostrato. – patrickandroid

1

Utilizzando questo esempio di Google project, ho provato ad aggiungere i suggerimenti di @Michael Rowland (ad esempio aggiungendo android: apduServiceBanner, categoria e descrizione).

Come risultato, il grafico viene visualizzato nella schermata Impostazioni di pagamento e pagamento, ma non nel testo. Ho registrato un problema con il progetto di esempio, ma non mi aspetto alcuna risoluzione.

La soluzione corrente consiste nel creare un file drawable apduServiceBanner che abbia il testo incorporato nel drawable.

1

Ulteriori informazioni: se si dimenticano le seguenti due righe nel manifest, l'applicazione non verrà visualizzata nel menu "tocca e paga".

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