detectar tag NFC vacias o no formateadas

839 views
Skip to first unread message

Yanet Hevia Quintana

unread,
Feb 26, 2013, 4:53:10 AM2/26/13
to desarrollad...@googlegroups.com
Hola, tengo un problema que llevo mucho dandole vueltas, tengo una aplicación android nfc que al pasar la tarjeta debe abrir mi aplicacion directamente, el tema es que me lo hace con algunas tarjetas y otras no, despues de muchos dias y busquedas me he dado cuenta que las tarjetas que vienen vacias o no formateadas como se suele decir son las que dan el problema, he leido de agregarlo al tech y muchas mas cosas pero no lo consigo, al pasar la etiqueta vacia me pone a seleccionar entre el lector nfc del telefono y mi app sin embargo escribo algo es esa misma tarjeta y me abre directo mi app sin preguntar.
alguien tiene idea que puede pasar y como lo podría resolver, adjunto el codigo del Manifest y la lista de tecn que tengo
ah me gustaria solucionarlo de alguna forma que pienso tiene que haber y no tener que escribir todas las tarjetas

  <activity
            android:name="AbrirActivity"
            android:configChanges="keyboard|keyboardHidden|orientation"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.Translucent.NoTitleBar">         
     
               <intent-filter android:priority="200">
                <action android:name="android.nfc.action.TAG_DISCOVERED"/>
                <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter> 
        
             <intent-filter>
                 <action android:name="android.nfc.action.NDEF_DISCOVERED"/>
                  <data android:mimeType="text/plain"/>
                  <data android:mimeType="text/x-vCard"/>                
                 <category android:name="android.intent.category.DEFAULT"/>
              </intent-filter>
             
           
             <intent-filter android:priority="100">
              <action android:name="android.nfc.action.TECH_DISCOVERED" />
             <category android:name="android.intent.category.DEFAULT"/>
             </intent-filter>
             <meta-data android:name="android.nfc.action.TECH_DISCOVERED"  android:resource="@xml/tecn" />
            
              
              
             </activity>


el tecn
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<tech-list>
   <tech>android.nfc.tech.IsoDep</tech>
</tech-list>

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

<tech-list>
<tech>android.nfc.tech.NfcV</tech>
</tech-list>

<tech-list>
<tech>android.nfc.tech.Nfcf</tech>
</tech-list>

<tech-list>
<tech>android.nfc.tech.NdefFormatable</tech>
</tech-list>


<tech-list>
<tech>android.nfc.tech.MifareClassic</tech>
</tech-list>

<tech-list>
<tech>android.nfc.tech.MifareUltralight</tech>
</tech-list>



</resources>

saludos y gracias

Message has been deleted

Jc Miñarro

unread,
Feb 28, 2013, 12:15:38 PM2/28/13
to desarrollad...@googlegroups.com

Yanet, te estás ganando un banneo....
Abriste el mismo tema hace apenas 2 días. Si no te han contestado por mucho que abras nuevos temas no te van a contestar, y además vas a empezar a caer mal a la gente de la lista, ya que en esta lista hay unas reglas que hay que cumplir.

--
Para participar es necesario que leas detenidamente las normas del grupo: http://goo.gl/20KhL
---
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a desarrolladores-a...@googlegroups.com.
Para publicar una entrada en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
 
 

juande

unread,
Feb 28, 2013, 12:16:17 PM2/28/13
to desarrollad...@googlegroups.com
Léete las normas del grupo: http://goo.gl/20KhL

En concreto el punto: 
  • Sé paciente a la hora de esperar una respuesta. Todos los usuarios colaboran de forma voluntaria y no están obligados a responder ningún mensaje. Si nadie responde tu pregunta, no la vuelvas a publicar como nuevo tema repitiéndola. En todo caso, responde a tu misma pregunta indicando los nuevos intentos que has hecho y por qué no te han funcionado. Los demás usuarios podrán ver que tienes voluntad, que te estás esforzando en solucionarlo, y pueden ofrecerse a ayudarte. No se debe "revivir" un tema de conversación añadiendo un comentario del tipo: "¿Alguien responde?" o "¿Alguien lo sabe?" sin añadir más información del problema.
Como has leído, está PROHIBIDO duplicar el mensaje sin añadir información adicional al problema. Siento mucho si nadie te ha dado una solución, pero la vida es así.

Yanet Hevia Quintana

unread,
Feb 28, 2013, 12:49:22 PM2/28/13
to desarrollad...@googlegroups.com
perdón es que nunca vi el mensaje y pense que lo había enviado mal, no hay necesidad de ponerse así pq es la primera vez que me pasa y no creo que tenga que caer mal por cometer un error que le puede pasar a cualquiera


--
Para participar es necesario que leas detenidamente las normas del grupo: http://goo.gl/20KhL
---
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a desarrolladores-a...@googlegroups.com.
Para publicar una entrada en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.

Juan de Dios Maldonado Sánchez

unread,
Feb 28, 2013, 8:03:14 PM2/28/13
to desarrollad...@googlegroups.com

A nosotros tampoco nos gusta llenar el grupo con mensajes de aviso como los que te hemos escrito, pero son necesarios si queremos mantener una organización. Mientras no se vuelva a repetir, no habrá ningún problema.

Sobre ayudar, por ejemplo, yo suelo ayudar más a quien colabora en el grupo ayudando a otros. Además de dedicarme a administrar el grupo.

Por cierto, puedes ver todos los mensajes publicados en este grupo entrando en la página del mismo utilizando los enlaces del pié del correo. (Para cuando tengas dudas de si se ha publicado tu mensaje)

juande

unread,
Mar 1, 2013, 11:45:43 AM3/1/13
to desarrollad...@googlegroups.com
Como he visto que has echado una mano correctamente a otro usuario del grupo voy a intentar ayudarte con tu problema, aunque nunca he hecho nada con NFC. Quizás lo que te ponga aquí te sirva de algo:

1. El que Android te de a elegir entre varias aplicaciones a la hora de procesar un Intent significa que todas esas aplicaciones que se muestran en la lista (A tí te aparecen dos a la hora de procesar una tarjeta sin formatear) son igual de válidas para procesarlo estando completamente empatadas. Un Intent implícito es el que se lanza diciéndo "Quiero realizar tal acción a tal dato en tal categoría". En la documentación de Android te explican cómo se selecciona la aplicación que va a procesar un Intent implícitamente.

A different strategy is needed for implicit intents. In the absence of a designated target, the Android system must find the best component (or components) to handle the intent a single activity or service to perform the requested action or the set of broadcast receivers to respond to the broadcast announcement. It does so by comparing the contents of the Intent object to intent filters, structures associated with components that can potentially receive intents. Filters advertise the capabilities of a component and delimit the intents it can handle. They open the component to the possibility of receiving implicit intents of the advertised type. If a component does not have any intent filters, it can receive only explicit intents. A component with filters can receive both explicit and implicit intents.

Only three aspects of an Intent object are consulted when the object is tested against an intent filter:

action
data
(both URI and data type)
category

The extras and flags play no part in resolving which component receives an intent.

Evidentemente, en caso de empate se dará a elegir al usuario. Así que en tu caso, posiblemente estén empatados en la acción y los datos. Quizás añadiendo una categoría que encaje con el Intent que se lanza con una tarjeta sin formatear, android directamente elija tu aplicación para procesar ese Intent ya que será de las aplicaciónes más específicas para esa acción.

Aún así, no veo ningún problema que te suceda esto, ya que cuando te pregunta qué aplicación utilizar, puedes marcarla para que sea la que siempre procese ese Intent y no te vuelva a preguntar.

2. Si no, échale un vistazo a la sección: "Using the Foreground Dispatch System" que te dice cómo hacer que tu aplicación adquiera prioridad frente a otras a la hora de procesar el mismo Intent:


Más no puedo hacer ya que nunca he trabajado con la tecnología NFC.

Suerte!

Yanet Hevia Quintana

unread,
Mar 1, 2013, 11:58:53 AM3/1/13
to desarrollad...@googlegroups.com
muchas gracias juande y si he ayduado a otros en el foro que hace un tiempo no respondiera no quiere decir que nunca lo hubiera hecho sobre todo pq los temas que mas toco son nfc y aqui como ves no se pregunta mucho sobre ello pero bueno nada estamos para ayudarnos así que da un poco igual quien responder y quien no.

con respecto a lo otro como dices las app compiten y abre el intent la que se paresca a ella por asi decirlo y asi lo logro con las demas que ni muestran la aplicación mía directamente, pero las vacias nada al parecer no es posible y siempre sale la que por defecto viene en el móvil.
de toda formas lo sigo mirando y si encuentro algo lo pongo para si a alguien le sirve, como dices se puede marcar pero hay veces que es un requisito. gracias por la ayuda.


--
Para participar es necesario que leas detenidamente las normas del grupo: http://goo.gl/20KhL
---
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a desarrolladores-a...@googlegroups.com.
Para publicar una entrada en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.

Juan de Dios Maldonado Sánchez

unread,
Mar 1, 2013, 12:14:30 PM3/1/13
to desarrollad...@googlegroups.com
Asegúrate de leerte y comprender:

Ya que en enableForegroundDispatch dice:

If you pass null for both the filters and techLists parameters that acts a wild card and will cause the foreground activity to receive all tags via theACTION_TAG_DISCOVERED intent.

La única pega que le veo es que tiene que estar tu aplicación funcionando en la pantalla, pero es una forma de FORZAR que sea tu aplicación la primera que reciba todos los Intents ACTION_TAG_DISCOVERED.

También podrías consultar el código fuente de la aplicación para manejar los NFCs del teléfono, o en el peor de los casos sacar el APK de la misma, descompilarla y mirar el Manifest para ver cómo tiene registrados los intent-filters.



2013/3/1 Yanet Hevia Quintana <yanet...@gmail.com>

Yanet Hevia Quintana

unread,
Mar 1, 2013, 12:20:32 PM3/1/13
to desarrollad...@googlegroups.com
me has dado una buena idea consultaré la app del telefono a ver si logro ver algo pq la documentacion me ha he leido un montón y algo se me escapa no se de hecho tengo registrado los 3 intent pues necesito que me reconosca todas las tarjetas que pasan ya sea un caso y otro pero esas tarjeta me saltan, gracias nuevamente

Juan de Dios Maldonado Sánchez

unread,
Mar 1, 2013, 12:26:28 PM3/1/13
to desarrollad...@googlegroups.com
Mira también otras aplicaciones de NFC publicadas para ver si hacen lo que tú quieres, por ejemplo:


Y si lo hace, tienes su código fuente en:

Ferran Gállego

unread,
Mar 11, 2013, 7:18:08 PM3/11/13
to desarrollad...@googlegroups.com
"Como he visto que has echado una mano correctamente a otro usuario del grupo voy a intentar ayudarte con tu problema[...]"

¿Qué clase de comunidad es ésta donde para merecer ayuda hay que haber ayudado antes?

Ferran


2013/3/1 Juan de Dios Maldonado Sánchez <jua...@gmail.com>

Juan de Dios Maldonado Sánchez

unread,
Mar 12, 2013, 3:11:24 AM3/12/13
to desarrollad...@googlegroups.com
Pues una comunidad en la que se fomenta el ayudar a los demás. Si no, estaría a rebosar de preguntas sin respuesta, ya que la gente tiende a ser muy egoísta. Y con este mensaje finaliza este Off Topic. Creo que queda bastante claro. Así que al que no le guste esta forma de proceder, que no participe en este grupo. Nos sobra gente que sólo pide ayuda y nunca colabora ayudando con los demás. 

Ferran Gállego

unread,
Mar 12, 2013, 3:58:26 AM3/12/13
to desarrollad...@googlegroups.com

:)

Menuda forma de optimizar el pelín de autoridad que tienes, chico.

A ver si haces lo mismo con el respeto.

Ahora sí que, si quieres, podemos dejar el off topic zanjado.

Saludos...

Sent from Android.

Juan de Dios Maldonado Sánchez

unread,
Mar 12, 2013, 4:19:23 AM3/12/13
to desarrollad...@googlegroups.com
Disculpad por esta conversación tan poco constructiva e irrelevante, pero ha sido ahora cuando me he dado cuenta de que este usuario era un troll. (Ya desde el primer mensaje se le veía venir, pero al parecer todavía estoy medio dormido)

Para quien no sepa qué es un Troll:

Ya está baneado, así que asunto zanjado.

2013/3/12 Ferran Gállego <ferran....@gmail.com>
Reply all
Reply to author
Forward
0 new messages