Pergunta

Eu quero a minha app para interceptar todas as tags descoberto pelo telefone.Que jeito que eu quero para verificar o uid da marca e passar sobre a intenção de posteriormente (mostrar um selector de aplicações etc.).

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

Isso é o que eu tenho atualmente na minha manifesto, juntamente com uma intenção de filtro para TAG_DISCOVERED:

<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 eu verificar uma Mifare smart card, o meu aplicativo é chamado, quando eu usar as diferentes tags com NXP ICODE ICs, o padrão do android tag aplicativo é iniciado.

Qualquer dica de como eu posso garantir que vou conseguir ver TODAS as marcas?

Foi útil?

Solução

Primeiro, a forma de um tech-lista de obras é de que todo o tech listados são Concatenadas em conjunto, ou seja, a intenção é transferida para o app, se o tag tem TODOS os diferentes técnicos listados.Eu não sei de nenhum que fazer.o que você está querendo fazer é mais:

<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 assim por diante.Este Sro as diferentes tags que você deseja.(NfcA ou NfcB etc.) Agora, alguns desses tech ir juntos, como NfcA e Ultraleve ou Ndef.Então, se você quer pegar um cartão, que é NfcA e Ndef você usaria

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

Agora, o aplicativo que mais se aproxime da tecnologia sobre a marca iria lançar, ou ser mostrado em um menu de seleção.Mas NDEF_DISCOVERED tem a prioridade sobre TECH_DISCOVERED.Agora o NDEF_DISCOVERED intenção launcher pode ser muito específico, em que marcas de obter passados.Enquanto alguns formatos de NDEF (Como o tipo de Mime) permitir para "pegar todos" filtros (por exemplo, "/"para Mime), alguns não.(como para um uri formatado Ndef Registro).Para aqueles que, se há um tipo específico de aplicativo destinado a ele, a menos que você de conhecê-lo e construí-lo, você não será capaz de garantir que seu aplicativo será lançado.Também eu nunca fui capaz de ter mais do que uma intenção de filtro para Ndef tags (Mime OU URI, mas não ambos).Mas que poderia ser que eu não tentei bastante difícil.

E se outro aplicativo tenta fazer o mesmo (catch como muitos tags possível), você sempre vai ser chamado com ele.Assim, não há nenhuma maneira possível de captura de cada marca, a menos que você tenha o único aplicativo no telefone.Mas a formatação do seu tech-lista de código de como você vê acima você vai chegar muito mais perto.

Outras dicas

Teoricamente você pode fazer isso com o primeiro plano de despacho:

http://developer.android.com/guide/topics/nfc/advanced-nfc.html#foreground-dispatch

Você precisa lidar com todos os NDEF_DISCOVERED tipos de MIME (/) e, em seguida, todos os TECH_DISCOVERED tag tecnologias, bem como a TAG_DISCOVERED intenção.Seu aplicativo deve estar em primeiro plano.Você não pode fazer garantir que seu aplicativo é iniciado o contrário, pois de qualquer outro aplicativo pode sempre manuseie a mesma intenção, a sua aplicação, e, portanto, a atividade seletor irá aparecer.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top