Android nfc intent-filter para mostrar mi aplicación cuando nfc descubre una etiqueta

Estoy escribiendo una aplicación que funciona con NFC y MIFARE CARD.

Cuando mi dispositivo NFC detectar una tarjeta, me muestra la lista de aplicaciones que pueden utilizar NFC, pero mi aplicación no se menciona.

¿Qué me falta en mi archivo de manifiesto android?

<uses-permission android:name="android.permission.NFC" /> <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="17" /> <uses-feature android:name="android.hardware.nfc" android:required="true" /> <application android:icon="@drawable/ic_launcher" android:allowBackup="true" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:uiOptions="splitActionBarWhenNarrow" android:name="it.namespace.app.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <intent-filter> <action android:name="android.nfc.action.TECH_DISCOVERED" /> <action android:name="android.nfc.action.TAG_DISCOVERED" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> <meta-data android:name="android.nfc.action.TECH_DISCOVERED" android:resource="@xml/tech_filter" /> </activity> </application> 

Y este es mi archivo tech_filter xml:

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

Aquí la imagen que muestra que mi aplicación no está en la lista: Introduzca aquí la descripción de la imagen

Tuve el mismo problema, y ​​lo fijo en base a esta frase en android doc http://developer.android.com/guide/topics/connectivity/nfc/nfc.html#tech-disc

"Si su actividad filtra para la intención ACTION_TECH_DISCOVERED, debe crear un archivo de recursos XML que especifique las tecnologías que su actividad soporta dentro de un conjunto de lista de tecnología.Su actividad se considera una coincidencia si un conjunto de lista técnica es un subconjunto de las tecnologías Que son compatibles con la etiqueta, que puede obtener llamando a getTechList ().

Por ejemplo, si la etiqueta que se escanea admite MifareClassic, NdefFormatable y NfcA, su conjunto de lista técnica debe especificar las tres, dos o una de las tecnologías (y nada más) para que su actividad pueda coincidir.

Su nfc_tech_list necesita definir un subconjunto de las tecnogías soportadas por la etiqueta actual.

– defina su manifiesto así:

  <intent-filter> <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/nfc_tech_list" /> </activity> 

– defina el xml nfc_check_list como esto:

 <?xml version="1.0" encoding="utf-8"?> <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <tech-list> <tech>android.nfc.tech.NdefFormatable</tech> <tech>android.nfc.tech.MifareUltralight</tech> </tech-list> <tech-list> <tech>android.nfc.tech.NfcA</tech> <tech>android.nfc.tech.Ndef</tech> </tech-list> <tech-list> <tech>android.nfc.tech.NfcB</tech> <tech>android.nfc.tech.Ndef</tech> </tech-list> </resources> 

Esto funcionará perfectamente.

¿Ha creado un recurso de lista técnica?

De: http://developer.android.com/guide/topics/connectivity/nfc/nfc.html#tech-disc

 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <tech-list> <tech>android.nfc.tech.IsoDep</tech> <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.Ndef</tech> <tech>android.nfc.tech.NdefFormatable</tech> <tech>android.nfc.tech.MifareClassic</tech> <tech>android.nfc.tech.MifareUltralight</tech> </tech-list> </resources> 

Si filtra en android.nfc.action.NDEF_DISCOVERED en lugar de android.nfc.action.TECH_DISCOVERED, no necesita una lista técnica.

Lo que actualmente tiene debe estar pasando por el android.nfc.action.TAG_DISCOVERED (vea el diagrama de flujo en la página referenciada).

Es muy probable que la lista de aplicaciones esté siendo generada porque todas esas aplicaciones manejan NDEF_DISCOVERED. La intención general del despachador NFC es crear un intento y entregarlo a la primera aplicación que coincida. El selector de aplicaciones sólo se muestra cuando varias aplicaciones coinciden con el filtro. Pasando por el diagrama de flujo que parece parejo se detiene cuando una acción de concordancia podría ser enviado.

 <intent-filter> <action android:name="android.nfc.action.NDEF_DISCOVERED" /> <action android:name="android.nfc.action.TECH_DISCOVERED" /> <action android:name="android.nfc.action.TAG_DISCOVERED" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> 
  • Phonegap NFC no funciona
  • ¿Es posible usar Android Beam entre un dispositivo Android y otro dispositivo NFC?
  • Mifare Ultralight C Autenticación en Android (2.3.6)
  • NFC pilas en el sistema operativo Android
  • IntentFilter en NFC - Xamarin - C #
  • Comando APDU para leer los datos de la tarjeta de crédito de Visa Paywave tarjeta NFC habilitado con Samsung Galaxy S4
  • Cómo enviar una cadena simple de android a android sobre nfc?
  • Cómo obtener el ID de hardware de NFC en Android
  • ¿Cómo funcionan los pagos NFC?
  • ¿Es posible tener una aplicación "Profile Owner" en Android Lollipop que no está presente
  • ¿Existe una API NFC para el Smartwatch 3 (SWR50)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.