Le moyen évident de détecter Android par le serveur est de rechercher la chaîne "Android" dans l'en-tête HTTP User-Agent. Mais - j'ai eu des plaintes que cela ne fonctionne pas sur certains appareils (par exemple dans mon HTC Evo), ils ne sont pas détectés comme Android. whatsmyuseragent.com donne pour mon HTC Evo 3D navigateur web : Mozilla/5.0 (X11 ; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.34 Safari/534.24 . Pas de chaîne ou de version Android. Cela pourrait être un logiciel de sécurité sur l'appareil qui le modifie, ou un problème spécifique à HTC, je n'en suis pas sûr.
Évidemment, Android Chrome sur le même appareil a une autre et meilleure UA : Mozilla/5.0 (Linux ; Android 4.0.3 ; HTC EVO 3D X515m Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19 Mais je ne peux pas espérer que, par exemple, l'application de lecture de codes QR ouvre Chrome et non le navigateur Android intégré, qui a une adresse universelle invalide.
Existe-t-il une bonne astuce (appel javascript ?) pour détecter de manière fiable Android sur tous les appareils et navigateurs ?
Éditer : il semble que le même problème se pose avec le Galaxy S III, même chaîne User-Agent : Détection du navigateur du téléphone Android