Domanda

Voglio la mia app per intercettare tutti i tag scoperti dal telefono.In questo modo voglio controllare l'UID del tag e passare l'intento dopo (mostra un selettore di applicazione ecc.).

<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<action android:name="android.nfc.action.TAG_DISCOVERED"/>
<action android:name="android.nfc.action.TECH_DISCOVERED"/>
.

Questo è quello che attualmente ho nel mio manifesto, insieme a un filtro intento per tag_discovering:

<tech-list>
     <tech>android.nfc.tech.NfcA</tech>
     <tech>android.nfc.tech.NfcB</tech>
     <tech>android.nfc.tech.NfcF</tech>
     <tech>android.nfc.tech.NfcV</tech>
     <tech>android.nfc.tech.IsoDep</tech>
     <tech>android.nfc.tech.MifareClassic</tech>
     <tech>android.nfc.tech.Ultralight</tech>
     <tech>android.nfc.tech.Ndef</tech>
     <tech>android.nfc.tech.NdefFormatable</tech>
 </tech-list>
.

Quando eseguo la scansione di una smartcard MIFare, la mia app viene chiamata, quando utilizzo tag diversi con ICode ICS NXP, viene lanciata l'app standard di tag Android.

Qualsiasi suggerimento su come posso assicurarmi di vedere tutti i tag?

È stato utile?

Soluzione

Prima di tutto, il modo in cui un elenco di tecnologia funziona è che tutti gli elenchi di Tech sono enduid insieme, il che significa che l'intento viene passato all'app se il tag ha tutti i diversi tecnici elencati. Non ne so niente. Quello che vuoi fare è di più:

<tech-list>
    <tech>android.nfc.tech.NfcA</tech>
</tech-list>
<tech-list>
    <tech>android.nfc.tech.NfcB</tech>
</tech-list>
<tech-list>
    <tech>android.nfc.tech.NfcF</tech>
</tech-list>
.

e così via. Questo os i diversi tag che desideri. (NFCA o NFCB ecc.) Ora alcuni di questi tech vanno insieme, come NFCA e Ultralight o NDEF. Quindi, se vuoi prendere una carta che è NFCA e NDEF, dovresti usare

<tech-list>
    <tech>android.nfc.tech.NfcA</tech>
    <tech>android.nfc.tech.Ndef</tech>
</tech-list>
.

Ora, l'app che corrisponde più strettamente alla tecnologia sul tag, o verrà visualizzata in un menu di selezione. Ma NDEF_Discover ha ottenuto la priorità su Tech_Discovering. Ora il lanciatore NDEF_Discovering Intent può essere molto specifico in quali tag sono passati. Mentre alcuni formati di NDEF (come tipo MIME) consentono di "cattura tutti" filtri (esempio, " / " per mime), alcuni non lo fanno. (Come per un record NDEF formattato URI). Per quelli, se c'è un'applicazione specifica che la propria, a meno che tu non lo sappia e lo costruisci, non sarai in grado di garantire che la tua app venga lanciata. Inoltre non sono mai stato in grado di avere più di un filtro intento per tag NDEF (MIME o URI, ma non entrambi). Ma potrebbe essere che non ho provato abbastanza duramente.

E se un'altra app tenta di fare lo stesso (cattura il maggior numero possibile di tag), ti verrà sempre richiamato. Quindi non c'è modo possibile di catturare ogni singolo tag, a meno che tu non abbia l'unica app al telefono. Ma la formattazione del tuo codice tecnico come se ne vedi sopra ti porterà molto più vicino.

Altri suggerimenti

Puoi farlo teoricamente con la spedizione in primo piano:

http://developer.android.com/Guida / Argomenti / NFC / Avanzato-NFC.HTML # PREVENTIVA PREFERIENZA

È necessario gestire tutti i tipi MIME NDEF_Discovering ( / ), quindi tutte le tecnologie TECH_Discoved Tag, così come l'intento Tag_Discovered.La tua app deve essere in primo piano.Non è possibile garantire che la tua app sia avviata altrimenti perché qualsiasi altra app può sempre gestire lo stesso intento della tua app, e quindi apparirà il selettore di attività.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top