No se puede detectar Android en el servidor web
La manera obvia de detectar Android por servidor es buscar la cadena "Android" desde el encabezado HTTP de User-Agent. Pero – he tenido quejas de que esto no funciona en algunos dispositivos (por ejemplo, en mi HTC Evo), no se detectan como Android. Whatsmyuseragent.com da para mi navegador web HTC Evo 3D: Mozilla / 5.0 (X11; Linux x86_64) AppleWebKit / 534.24 (KHTML, como Gecko) Chrome / 11.0.696.34 Safari / 534.24 . No hay cadena o versión de Android. Podría ser un software de seguridad en el dispositivo que lo altera, o cuestión específica de HTC, no está seguro acerca de ello.
Obviamente Android Chrome en el mismo dispositivo tiene otro, y mejor UA: Mozilla / 5.0 (Linux, Android 4.0.3, HTC EVO 3D X515m Build / IML74K) AppleWebKit / 535.19 (KHTML, como Gecko) Chrome / 18.0.1025.166 Mobile Safari / 535.19 , Pero no puedo esperar que, por ejemplo, la aplicación QR Code reader abra Chrome y no el navegador Android incorporado, que tiene una UA no válida.
- La forma más fácil de tener el botón de abrir el navegador a la URL específica
- Windows Phone 7 equivalente de Android WebView
- El primer fotograma del vídeo de fondo no se muestra en Android
- Obtener el ancho interno de la ventana y la altura del androide integrado en el navegador web en todos los niveles de zoom
- ¿Cómo registrar un espacio de nombres de URL (myapp: //app.start/) para acceder a su programa llamando a una URL en el navegador en Android OS?
¿Hay un buen truco (llamada javascript?) Para detectar de forma fiable Android a través de dispositivos y navegadores?
Editar: parece que el mismo problema con Galaxy S III, misma cadena de User-Agent: Android Phone Browser Detection
- Cómo abrir la página html local en el navegador
- ¿Es posible usar JavaScript para cerrar el navegador Android?
- ¿Se admite multi-touch / gestos en todos los navegadores de teléfonos inteligentes (Android e iOS)?
- HTML: ¿Por qué el navegador de Android muestra "Ir" en lugar de "Siguiente" en el teclado?
- ¿Cómo consigo que el navegador WVGA Android deje de escalar mis imágenes?
- Intentos de Android para abrir el navegador preferido del usuario
- Detectar navegación anónima / incógnita
- ¿Cómo puedo comprobar si una aplicación se ejecuta en Android?
Parece que había seleccionado "Mostrar versión de escritorio" en la configuración del navegador web de Android. Una vez apagado, el usuario-agente está con Android dentro. Esto parece ser una característica de ICS, HTC no debe ser culpado: google para el agente de usuario equivocado que he dado a ver que sucede en muchos teléfonos diferentes.
Para esta tarea en particular, podría sugerir el uso de wurfl lado del servidor.
Puedes detectar android haciendo algo muy simple:
$requestingDevice = $wurflManager->getDeviceForHttpRequest($_SERVER); if ($requestingDevice->getCapability("device_os") == "Android") { //the magic }
Comprobar el agente del usuario siempre ha sido la forma recomendada para determinar de forma fiable el dispositivo del usuario, (al menos con la configuración predeterminada de todos modos). Tal vez usted podría tratar de hacer su búsqueda más sólida? Mozilla sugiere buscar la cadena "Mobi" en su lugar.
Lo que entendí de su problema es que usted está recibiendo agente de usuario en algunos dispositivos y en algunos de los dispositivos se niegan a dar eso. Así que estoy asumiendo que usted tiene una aplicación en el dispositivo android que está llamando a su servidor a través de algunos webservice y de que está tratando de extraer el agente de usuario. Por lo que la solución que puedo ver aquí es en la aplicación de Android agregar el parámetro de agente de usuario como de código por lo que se publicará en la cabecera HTTP y desde el servidor se puede extraer fácilmente
HttpClient httpclient = new DefaultHttpClient(); httpclient.getParams().setParameter(CoreProtocolPNames.USER_AGENT, "Android");
Tuve el mismo problema pero resolví de esta manera.