2011-05-17 14 views

Respuesta

173

Tome un vistazo a eso: http://davidwalsh.name/detect-android

JavaScript:

var ua = navigator.userAgent.toLowerCase(); 
var isAndroid = ua.indexOf("android") > -1; //&& ua.indexOf("mobile"); 
if(isAndroid) { 
    // Do something! 
    // Redirect to Android-site? 
    window.location = 'http://android.davidwalsh.name'; 
} 

PHP:

versión
$ua = strtolower($_SERVER['HTTP_USER_AGENT']); 
if(stripos($ua,'android') !== false) { // && stripos($ua,'mobile') !== false) { 
    header('Location: http://android.davidwalsh.name'); 
    exit(); 
} 
+1

que sir es una leyenda. – Xavier

+5

no olvide verificar también las tabletas de Android: http://googlewebmastercentral.blogspot.com/2011/03/mo-better-to-also-detect-mobile-user.html –

+2

Vale la pena señalar que esto no siempre funcionan para dispositivos Android como, por ejemplo, los agentes de usuario informados por dispositivos Kindle Fire HD no contienen la palabra 'android' en absoluto. – djbp

-2

js, las capturas iPad también:

var is_mobile = /mobile|android/i.test (navigator.userAgent); 
+3

No funciona porque atrapa muchos dispositivos, no solo Android como lo requiere la pregunta. – NickG

+1

Use al menos algo como esto: /android.*(?=mobile)/i.test(navigator.userAgent); para detectar el teléfono Android. Pero esta expresión regular contiene cuantificadores "caros", por lo que la respuesta de Philip con 2 pruebas separadas puede ser más apropiada. –

2
;(function() { 
    var redirect = false 
    if (navigator.userAgent.match(/iPhone/i)) { 
     redirect = true 
    } 
    if (navigator.userAgent.match(/iPod/i)) { 
     redirect = true 
    } 
    var isAndroid = /(android)/i.test(navigator.userAgent) 
    var isMobile = /(mobile)/i.test(navigator.userAgent) 
    if (isAndroid && isMobile) { 
     redirect = true 
    } 
    if (redirect) { 
     window.location.replace('jQueryMobileSite') 
    } 
})() 
1

Creo que la respuesta de Michal es el mejor, pero no podemos dar un paso más allá y cargar dinámicamente una CSS Android como por la pregunta original :

var isAndroid = /(android)/i.test(navigator.userAgent); 
if (isAndroid) { 
    var css = document.createElement("link"); 
    css.setAttribute("rel", "stylesheet"); 
    css.setAttribute("type", "text/css"); 
    css.setAttribute("href", "/css/android.css"); 
    document.body.appendChild(css); 
} 
+0

¿Por qué querrías hacer eso, mientras puedes usar consultas de medios? La detección de dispositivos JS debe ser solo para mejoras, como agregar una invitación para instalar su aplicación. La representación de la página nunca debe confiar en ella, ya que tendrá problemas de rendimiento y una experiencia de uso horrible. – camilokawerin

+0

@camilokawerin Su comentario debe estar dirigido al autor. Simplemente estaba dando una respuesta a su pregunta. Sin embargo, hay casos en los que desea un CSS específico de la plataforma. Por ejemplo, si desea que el estilo visual de la interfaz coincida con el dispositivo. – drlarsen

4

No hay necesidad de jQuery aquí. Como ya se mencionó anteriormente, debe verificarlo utilizando la propiedad del agente de usuario. Si está interesado en detectar otras plataformas también, o simplemente si está en un dispositivo móvil en general, escribí este is-mobile component que puede detectarlo.

dude en importar y utilizar como se muestra en estos ejemplos:

isMobile.Android() => true/false 
isMobile.iOS() => true/false 
isMobile.Windows() => true/false 
isMobile.KindleFire() => true/false 
isMobile.any() => true/false 
+1

Su solución es excelente, pero aún requiere que se compruebe si no es Windows cuando se busca Android debido al agente de usuario de Mobile Edge que contiene la coincidencia de la palabra clave "android". Por supuesto, este es un problema menor debido a la falta de dispositivos de teléfono de Windows reales. Hasta ahora, este es el mejor que veo en esta página. – Felype

+0

Gracias por la entrada @Felype! Actualicé mi solución para manejar el caso límite que mencionaste. –

Cuestiones relacionadas