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.
- Cómo añadir JavaScript al navegador de Android
- Jquery, ¿cómo probar un navegador móvil?
- ¿Hay alguna referencia / documentación del navegador de Android?
- Android no puede implementar el comentario de facebook en una vista web debido al navegador predeterminado
- Abrir el navegador nativo de una aplicación de Android
¿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
- HTML: ¿Por qué el navegador de Android muestra "Ir" en lugar de "Siguiente" en el teclado?
- Cómo implementar mi propio esquema URI en Android
- Obtener el historial de WebView de WebBackForwardList
- Ver código html para una página web en Tablets
- Navegador web de Android SDK
- ¿Cómo puedo comprobar si una aplicación se ejecuta en Android?
- Cómo abrir la página html local en el navegador
- Cómo enfocar un campo de entrada en el navegador de Android a través de javascript o jquery
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.