Etiqueta Android NFC recibida con el receptor de difusión

Estoy tratando de capturar la etiqueta NFC en receptor de difusión por lo que escribí un BR simple que imprime "asd" en el onReceive (). En el xml de manifiesto es desribed así:

Y recibo sólo esto y ninguna impresión en absoluto ….

01-31 16:37:18.980: ERROR/MediaPlayer(990): setAudioStream called in state 8 01-31 16:37:18.980: ERROR/MediaPlayer(990): error (-38, 0) 01-31 16:37:18.980: ERROR/MediaPlayer(990): start called in state 0 01-31 16:37:18.980: ERROR/MediaPlayer(990): error (-38, 0) 01-31 16:37:18.988: ERROR/MediaPlayer(990): Error (-38,0) 

Cuando uso la actividad para manejar la intención como esta:

 <activity android:name="TagViewer" android:theme="@android:style/Theme.NoTitleBar"> <intent-filter> <action android:name="android.nfc.action.TAG_DISCOVERED"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity> 

La actividad se inicia y funciona perfectamente, así que ¿cómo puedo hacer que funcione con BroadcastReceiver?

No puedes. Como usted señaló, el adaptador NFC está utilizando algo muy parecido a startActivity () para enviar una intención con información de etiqueta en ella. No es exactamente como lo que podemos hacer dentro del SDK de Android, ya que las etiquetas NFC son especiales. Por ejemplo, no puede emular la startActivity () por su cuenta para nada excepto TAG_DISCOVERED, que es la acción de último recurso y no terriblemente útil.

Creo que la razón de esto es debido al manejo especial de las intenciones NFC. Cuando una etiqueta es descubierta por el hardware NFC, va buscando algo que maneje la etiqueta. Las actividades del primer plano consiguen primer intento. Intenta una intención NDEF_DISCOVERED a continuación si puede, y busca una actividad para tomarla. Si no puede encontrar uno, intenta una intención con TECH_DISCOVERED. Una vez más, si no se puede encontrar ninguna actividad, finalmente intenta TAG_DISCOVERED. Si se utiliza una emisión, ¿cómo podría hacer esta lógica de retroceso para seguir tratando de encontrar algo para manejar la etiqueta? ¿Cómo sabría si algo estaba actuando en la intención de la etiqueta? ¿Y cómo podría asegurarse de que sólo una cosa iba a actuar en la etiqueta?

Usted podría escribir una pequeña actividad que no muestra ninguna interfaz de usuario, envía un mensaje de difusión y luego termina con finish (). Usando banderas en el manifiesto puede evitar que aparezca en la historia o en recents y ser faily invisible, con suerte obtener un efecto similar a lo que usted desea con el receptor braodcast.

  • ¿Cómo instalar Open NFC Simulator para Android?
  • ¿Cómo puedo habilitar el lector NFC vía API?
  • Posibilidad de lanzamiento de falsos NFC (Near Field Communication)
  • Lectura de una etiqueta emulada en el teléfono Android con CPR Lector 40.30-USB: "Tipo de Transpondedor Incorrecto"
  • Android: Autenticación con NXP MiFare Ultralight C
  • Android NFC leer etiqueta ISO15693 RFID
  • NFC: ¿Cuál es la diferencia entre S-beam y Android beam?
  • Android Gingerbread: ¿Soporte NFC - Recibir solo?
  • Determinación de los requisitos de alimentación para una tarjeta inteligente sin contacto en Java.
  • Android: Leyendo la etiqueta NFC en la clase de servicio
  • Cómo implementar las funciones RFID en nuestra aplicación Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.