3 votos

Tocar una etiqueta NFC que contenga una URL. (¿Cómo) puedo anular la acción por defecto (lanzamiento del navegador)?

Mi pregunta anterior estableció que cuando un dispositivo Android restablecido de fábrica toca una etiqueta NFC que contiene una URL, el sistema operativo lanza un navegador.

¿Puedo evitarlo?

¿Es una acción por defecto del sistema operativo, ya que no hay ningún otro gestor disponible?

Si codifico un BroadcatReceiver para manejar el toque, ¿eso evitará automáticamente que el o/s lance el navegador? Si no, ¿puedo añadir código para suprimir el lanzamiento del navegador?

2voto

Nir Puntos 211

El navegador se abre porque ninguna otra aplicación puede realizar esta acción. Si tienes dos navegadores, el sistema operativo te preguntará qué aplicación quieres que se encargue de esta acción y cuando elijas una, el sistema operativo recordará tu preferencia.

Siempre se puede ir a la configuración (la aplicación) y "borrar por defecto". Así que, a tu pregunta puedes escribir una aplicación que se encargue de esta acción (escribiendo este receptor Broadcast en el AndroidManifest.xml) y no hacer nada con la URL. Y luego pulsar sobre la etiqueta NFC y elegir tu app y pulsar siempre (para que no vuelva a preguntar). De esta manera se puede forzar al sistema operativo a no hacer nada cuando se toca en una etiqueta NFC con una URL.

1voto

rizzle Puntos 3127

Desde el punto de vista del usuario, no se puede evitar realmente que una URL recuperada de una etiqueta NFC se inicie en un navegador. Al descubrir una URL de este tipo, Android simplemente notifica a la aplicación que previamente registró su interés en ese tipo de datos procedentes de una etiqueta NFC (o muestra un selector de actividad si varias aplicaciones registraron un interés en ese tipo de datos).

Por lo tanto, es la aplicación del navegador web que registró su interés (a través de un filtro de intención en su AndroidManifest.xml) y normalmente no se puede 1 desactivar esto.

Sin embargo, desde el punto de vista de un programador, se puede evitar que una determinada URL sea manejada por un navegador web. Los navegadores web suelen registrarse para ser lanzados en todas las URLs "http://" y "https://". Puedes anular esto registrando tu aplicación para una URL más específica (es decir, una que incluya un nombre de host o incluso una ruta, por ejemplo http://www.example.com/ ). En ese caso, su aplicación tendrá automáticamente prioridad sobre el navegador web (no se mostrará el selector de actividad).

Respecto a tu idea con el BroadcastReceiver: Actualmente no es posible. Los eventos de descubrimiento de NFC, como el descubrimiento de una URL, sólo se envían a las actividades. Un receptor de difusión no puede recoger estos intentos. (Véase esta pregunta en Stackoverflow para una posible solución).


1 ) Tenga en cuenta que esto no es del todo cierto, ya que hay algunos medios para desactivar los filtros de intención de forma programada bajo ciertas condiciones.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X