He estado confundido acerca de cómo funciona esto para cotizar hace un tiempo: cuando hago clic en un enlace, digamos en un navegador (Chrome, por ejemplo) y obtengo el cuadro de diálogo "abrir con" si lo desea, si elijo guardar un valor predeterminado para un enlace de mapas de Google, ¿eso establecerá el valor predeterminado en TODOS los enlaces de mapas de Google, ese enlace en particular, o me estoy perdiendo algo?
A menudo tengo miedo de establecer valores predeterminados porque no tengo claro para qué estoy configurando un valor predeterminado: ¿es el nombre de dominio?
Agradecería cualquier consejo, enlace a la documentación o sugerencias de aplicaciones para aclararme esto. ¡Gracias!
Respuesta corta: sí, es para todos los enlaces de Google Maps.
La respuesta larga es que el mecanismo de intención de Android (que es la forma en que Android decide qué aplicación iniciar) puede usar diferentes partes de la URL para hacer coincidir la aplicación. La aplicación puede registrarse con Android para manejar:
market://
youtube.com
/users/*
Las aplicaciones también pueden filtrar otras cosas que no son relevantes para hacer clic en un enlace, como diferentes acciones (por ejemplo, compartir) o diferentes tipos de MIME. Una aplicación puede tener más de un filtro y un filtro puede coincidir con cualquier combinación de las cosas anteriores. Por ejemplo, una aplicación de YouTube puede tener un filtro que coincida cuando se cumplan todas estas condiciones:
http://
ohttps://
youtube.com
watch?v=*
y otra que coincida cuando se cumplan todas estas condiciones:
http://
ohttps://
youtu.be
(el dominio para URL cortas)En este caso, hay dos valores predeterminados diferentes para configurar: la primera vez que haga clic en un enlace http://www.youtube.com/watch?v=DJRFaR71HfY
, se establecerá el valor predeterminado para ese tipo de enlace. Luego, si luego hace clic en un http://youtu.be/DJRFaR71HfY
, le preguntará por segunda vez, porque eso cuenta como un tipo diferente de enlace.
En el caso de Google Maps, hay varios tipos diferentes de enlaces que puede manejar (así como otros filtros de intenciones que no son relevantes para los enlaces):
geo://*
latitude://*
http://maps.google.tld/
o https://maps.google.tld/
(sin nada después de /
), por cada TLD que tiene Google (google.com, google.fr, etc.)http://maps.google.tld/maps*
ohttps://maps.google.tld/maps*
http://mapy.google.pl/
o https://mapy.google.pl/
("mapy" en polaco significa "mapas")http://mapy.google.pl/maps*
ohttps://mapy.googl.pl/maps*
http://local.google.com/
ohttps://local.google.com/
http://local.google.com/maps*
ohttps://local.google.com/maps*
http://m.google.com/latitude
ohttps://m.google.com/latitude
http://www.google.com/latitude
ohttps://www.google.com/latitude
http://m.google.com/u/m/*
ohttps://m.google.com/u/m/*
Cada una de esas líneas cuenta como un tipo diferente de enlace, por lo que Android volverá a preguntar. Además, todos excepto el primero tienen dos entradas separadas: una para abrir o explorar un enlace de la manera habitual y otra para escanear una etiqueta NFC (o recibir mediante Android Beam) un enlace coincidente. Nuevamente, esas dos cosas cuentan como enlaces diferentes a los efectos de establecer los valores predeterminados.
Para obtener esta información de la aplicación Google Maps, utilicé la aplicación PackageExplorer . La información que le brinda requiere cierto conocimiento para interpretarla: puede encontrar útil la guía de la API de intención de Android para desarrolladores .
izzy
dan hulme
izzy
text/html
) cuando hay varios navegadores disponibles, ¿entonces eso parece ser una excepción de alguna manera?