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.

¿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

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.

  • Inicie la aplicación youtube desde el navegador de Android
  • Android lee el historial del navegador
  • Soporte de SVG en Android, estado actual
  • Abrir vínculos externos en el navegador con la vista web de Android
  • ¿Cómo puedo supervisar y obtener tráfico http en una aplicación Android?
  • El navegador predeterminado de Android crea la barra de desplazamiento horizontal para diseño responsivo
  • Observador de contenido de Android History
  • Obtener el historial de WebView de WebBackForwardList
  • No se pudo iniciar la aplicación llamando a una URL desde el navegador de Android
  • ¿Cómo puedo utilizar appium para automatizar el navegador en android?
  • Idiomas de indicador en el navegador de Android / GUI (Gujarati) interpretación incorrecta
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.